table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| 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 |