Создание объекта и передача права собственности на контейнер с помощью unique_ptr не проблема. Как удалить элемент по необработанному указателю?
std::set<std::unique_ptr<MyClass>> mySet;
MyClass *myClass = new MyClass();
mySet.insert(std::unique_ptr<MyClass>(myClass));
// remove myClass from mySet?