Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::unique_ptr::release(3)   C++ Standard Libary  std::unique_ptr::release(3)

NAME
       std::unique_ptr::release	- std::unique_ptr::release

Synopsis
	  pointer release() noexcept;  (since C++11)
				       (constexpr since	C++23)

	  Releases the ownership of the	managed	object,	if any.

	  get()	returns	nullptr	after the call.

	  The caller is	responsible for	cleaning up the	object (e.g. by	use of
       get_deleter()).

Parameters
	  (none)

Return value
	  Pointer to the managed object	or nullptr if there was	no managed ob-
       ject, i.e. the
	  value	which would be returned	by get() before	the call.

Example
       // Run this code

	#include <cassert>
	#include <iostream>
	#include <memory>

	struct Foo
	{
	    Foo() { std::cout << "Foo\n"; }
	    ~Foo() { std::cout << "~Foo\n"; }
	};

	//  Ownership  of  the	Foo  resource is transferred when calling this
       function
	void legacy_api(Foo* owning_foo)
	{
	    std::cout << __func__ << '\n';
	    // [legacy code that no one	understands or dares touch anymore]
	    // [...]
	    delete owning_foo;
	}

	int main()
	{
	    std::unique_ptr<Foo> managed_foo(new Foo);
	    // [code that might	return or throw	or some	such]
	    // [...]
	    legacy_api(managed_foo.release());

	    assert(managed_foo == nullptr);
	}

Output:
	Foo
	legacy_api
	~Foo

See also
	  get	      returns a	pointer	to the managed object
		      (public member function)
	  get_deleter returns the deleter that is used for destruction of  the
       managed object
		      (public member function)
	  reset	      replaces the managed object
		      (public member function)

http://cppreference.com		  2024.06.10	   std::unique_ptr::release(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::unique_ptr::release&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help