#include <memory>
#include <iostream>

template <typename T>
struct Deleter
{
	void operator()(T* t)
	{
		std::cout << "Deleter::oerator(): " << t << std::endl;
		delete t;
	}
};

struct A 
{
	A() 
	{
		std::cout << "A::A()" << std::endl;
	}

	~A() 
	{
		std::cout << "A::~A()" << std::endl;
	}
};

int main(int argc, char const *argv[])
{
	std::unique_ptr<A, Deleter<A>> ptr(new A);

	
	return 0;
}