Свой удалитель для unique_ptr в C++
Удалитель - второй параметр шаблона
std::unique_ptr: им задают, как
освобождать память.
Частый вариант - указатель на функцию, которая
выполняет побочное действие и затем вызывает
delete. Запишем такую функцию
и передадим ее при создании unique_ptr:
#include <iostream>
#include <memory>
void trace_delete(int* p) {
std::cout << "trace\n";
delete p;
}
int main() {
std::unique_ptr<int, void(*)(int*)> slot(
new int(5), trace_delete);
std::cout << *slot << "\n";
return 0;
}
Напишите функцию void drop(int* p),
печатающую drop и вызывающую
delete. Создайте unique_ptr<int, void(*)(int*)>
с числом 2 и этим удалителем.
Выведите значение до выхода из main.