table of contents
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
object, 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)
2024.06.10 | http://cppreference.com |