Espacios de nombres
Variantes

std::unique_ptr::~unique_ptr

De cppreference.com
 
 
Biblioteca de servicios
Apoyo del lenguaje
Apoyo de tipos (tipos básicos, RTTI)
Macros de prueba de característica de la biblioteca (C++20)
Servicios de programa
Funciones variádicas
Apoyo de corrutinas (C++20)
Apoyo de contratos (C++26)
Comparación de tres vías (C++20)
(C++20)
(C++20)(C++20)(C++20)  
(C++20)(C++20)(C++20)

 
Gestión de memoria dinámica
Punteros inteligentes
(C++11)
(C++11)
(C++11)
(hasta C++17)
(C++11)
(C++23)
Asignadores de memoria
Recursos de memoria
Almacenamiento no inicializado
Algoritmos de memoria no inicializada
Algoritmos restringidos de memoria no inicializada
Apoyo para recolección de basura
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
Misceláneos
(C++20)
(C++11)
(C++11)
 
 
~unique_ptr();
(desde C++11)
(constexpr since C++23)

Si get() == nullptr no hay efectos. De lo contrario, el objeto poseído se destruye a través de get_deleter()(get()).

Requiere que get_deleter()(get()) no lance excepciones.

Notas

Aunque std::unique_ptr<T> con el eliminador por defecto se puede construir con un tipo incompleto T, el tipo T debe estar completo en el punto del código donde se llama al destructor.

Ejemplo

El siguiente programa demuestra el uso de un eliminador personalizado.

#include <iostream>
#include <memory>
 
int main () 
{
    auto deleter = [](int* ptr){
        std::cout << "[se ha llamado al eliminador]\n";
        delete ptr;
    };
 
    std::unique_ptr<int,decltype(deleter)> uniq(new int, deleter);
    std::cout << (uniq ? "no vacío\n" : "vacío\n");
    uniq.reset();
    std::cout << (uniq ? "no vacío\n" : "vacío\n");
}

Salida:

no vacío
[se ha llamado al eliminador]
vacío
Morty Proxy This is a proxified and sanitized view of the page, visit original site.