std::unique_ptr<T,Deleter>::~unique_ptr (3) - Linux Manuals

std::unique_ptr<T,Deleter>::~unique_ptr: std::unique_ptr<T,Deleter>::~unique_ptr

NAME

std::unique_ptr<T,Deleter>::~unique_ptr - std::unique_ptr<T,Deleter>::~unique_ptr

Synopsis


~unique_ptr(); (since C++11)


If get() == nullptr there are no effects. Otherwise, the owned object is destroyed via get_deleter()(get()).
Requires that get_deleter()(get()) does not throw exceptions.

Notes


Although std::unique_ptr<T> with the default deleter may be constructed with incomplete_type T, the type T must be complete at the point of code where the destructor is called.

Example


The following program demonstrates usage of a custom deleter.
// Run this code


  #include <iostream>
  #include <memory>


  int main ()
  {
      auto deleter = [](int* ptr){
          std::cout << "[deleter called]\n";
          delete ptr;
      };


      std::unique_ptr<int,decltype(deleter)> uniq(new int, deleter);
      std::cout << (uniq ? "not empty\n" : "empty\n");
      uniq.reset();
      std::cout << (uniq ? "not empty\n" : "empty\n");
  }

Output:


  not empty
  [deleter called]
  empty