std :: make_unique与空指针?

Pie*_*tro 1 c++ unique-ptr c++14

我没有找到有关如果将null指针传递给会发生什么的任何文档std::make_unique

是否抛出异常?

Mic*_*kis 8

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.
Run Code Online (Sandbox Code Playgroud)


Jac*_*ack 5

std::make_unique 旨在通过将参数转发到包装对象的构造函数来构造包装的对象。

传递nullptr它对您的意思没有任何意义。如果您需要清除std::unique_ptr公正通话的内容reset()