std::unique_ptr::~unique_ptr
Материал из cppreference.com
<tbody>
</tbody>
~unique_ptr(); |
(начиная с C++11) (constexpr since C++23) |
|
Если get() == nullptr нет никаких эффектов. Иначе принадлежащий объект уничтожается с помощью get_deleter()(get()).
Требуется, чтобы get_deleter()(get()) не выдавала исключений.
Примечание
Несмотря на то, что std::unique_ptr<T> с деструктором по умолчанию может быть создан с неполным типом T, тип T должен быть полным в той точке кода, где вызывается деструктор.
Пример
Следующая программа демонстрирует использование пользовательского средства удаления.
Запустить этот код
#include <iostream>
#include <memory>
int main ()
{
auto deleter = [](int* ptr){
std::cout << "[вызывается средство удаления]\n";
delete ptr;
};
std::unique_ptr<int,decltype(deleter)> uniq(new int, deleter);
std::cout << (uniq ? "непустой\n" : "пустой\n");
uniq.reset();
std::cout << (uniq ? "непустой\n" : "пустой\n");
}
Вывод:
непустой
[вызывается средство удаления]
пустой