##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::unique_ptr::~unique_ptr

From cppreference.com
< cpp‎ | memory‎ | unique ptr

~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.

### [edit] 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.

### [edit] 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

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/memory/unique_ptr/%7Eunique_ptr&oldid=69644"