#include <memory>

class Base
{
};

class Derived : public Base
{
};

struct BaseDeleter
{
	void operator()(Base* base)
	{
		// Perform some special deleting
	}
};

class Big
{
public:
	Big()
	{
		//pointer.reset(new Derived()); // This works!
		pointer = std::make_unique<Derived, BaseDeleter>(); // But this doesn't...
	}
	
private:
	std::unique_ptr<Base, BaseDeleter> pointer;
};

int main()
{
	Big clazz;
}