< cpp‎ | memory‎ | unique ptr
pointer release();
(since C++11)

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


[edit] Parameters


[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:  

[edit] Example

#include <memory>
#include <iostream>
#include <cassert>
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();
    assert (up.get() == nullptr);
    std::cout << "Foo is no longer owned by unique_ptr...\n";
    delete fp;


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

[edit] See also

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