Consider this example :
#include #include struct base { base( int i ): i(i) { printf(\"base ctor\\n\"); } ~base(
Not all unique_pointers are used polymorphically:
std::unique_ptr p(new int(42));
This would not compile with the restriction you propose. Same with classes:
std::unique_ptr p(new YourClassHere);