std :: make_unique пересылает все аргументы, переданные соответствующему целевому конструктору.Поэтому, если вы передадите nullptr
, он будет искать конструктор, который принимает nullptr_t (или любой соответствующий конструктор).Если его там нет, он не скомпилируется.
class A
{
public:
A(void*) { ... } // could also be A(int*) or template <typename T> A(T*)
};
...
std::make_unique<A>(nullptr); // constructs an A by calling A(void*), passing nullptr.