std::unique_ptr::~unique_ptr
De cppreference.com
~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.
Ejecuta este código
#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