std::unique_ptr::release

From cppreference.com
 
 
 
 
 
pointer release();
(since C++11)

Releases the ownership of the managed object if any. get() returns nullptr after the call.

Contents

[edit] Parameters

(none)

[edit] Return value

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

[edit] Exceptions

noexcept specification:  
noexcept
  (since C++11)

[edit] Example

#include <memory>
#include <iostream>
 
struct Foo {
    Foo() { std::cout << "Foo\n"; }
    ~Foo() { std::cout << "~Foo\n"; }
};
 
int main()
{
    std::cout << "Creating new Foo...\n";
    std::unique_ptr<Foo> up(new Foo());
 
    std::cout << "About to release Foo...\n";
    Foo* fp = up.release();
 
    if (up.get() == nullptr)
        std::cout << "Foo is no longer owned by unique_ptr...\n";
 
    delete fp;
}

Output:

Creating new Foo...
Foo
About to release Foo...
Foo is no longer owned by unique_ptr...
~Foo

[edit] See also

returns a pointer to the managed object
(public member function)
replaces the managed object
(public member function)