Namespaces
Variants

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

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
~unique_ptr ( ) ;
(seit C++11)
(constexpr seit C++23)

Wenn get() == nullptr gibt es keine Auswirkungen. Andernfalls wird das verwaltete Objekt durch get_deleter() ( get() ) zerstört.

Erfordert, dass get_deleter()(get()) keine Ausnahmen wirft.

Hinweise

Obwohl std::unique_ptr<T> mit dem Standard-Deleter mit einem unvollständigen Typ T konstruiert werden kann, muss der Typ T an der Stelle im Code, an der der Destruktor aufgerufen wird, vollständig sein.

Beispiel

Das folgende Programm demonstriert die Verwendung eines benutzerdefinierten Deleter.

#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");
}

Ausgabe:

not empty
[deleter called]
empty