|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Modifiers | ||||
unique_ptr::release | ||||
| Observers | ||||
| Non-member functions | ||||
(C++14)(C++20) | ||||
(until C++20)(C++20) | ||||
(C++20) | ||||
| Helper classes | ||||
pointer release()noexcept; | (since C++11) (constexpr since C++23) | |
Releases the ownership of the managed object, if any.
get() returnsnullptr after the call.
The caller is responsible for cleaning up the object (e.g. by use ofget_deleter()).
Contents |
(none)
Pointer to the managed object ornullptr if there was no managed object, i.e. the value which would be returned byget() before the call.
#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 functionvoid 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:
Foolegacy_api~Foo
| returns a pointer to the managed object (public member function)[edit] | |
| returns the deleter that is used for destruction of the managed object (public member function)[edit] | |
| replaces the managed object (public member function)[edit] |