#include #include #include #include using std::unique_ptr; using std::string; template struct Del { void operator()(T* p) { std::cout << "Del deleting " << *p << '\n'; delete p; } }; int main() { { unique_ptr> us{new string{"Hello"}, Del{}}; } std::cout << "us is now out of scope\n"; { unique_ptr> ud{new double{7.5}, [](double* p) { std::cout << "Deleting " << *p << '\n'; delete p; } }; } std::cout << "ud is now out of scope\n"; }