重新分配 unique_ptr

Reassigning unique_ptr

在这段代码中,Jetbrains CLion 抱怨 'unique_ptr::operator=(const unique_ptr &)' is deleted:

std::unique_ptr<std::string> test;
test = std::make_unique<std::string>();

但是关于这个:

auto test2 = std::make_unique<std::string>();

没有抱怨。

CLion 对不对?可以重新分配 unique_ptr 吗?

upd GCC、CLang 和 MSVC++ 都可以编译,并且必须由任何 C++14 编译器编译。只是对CLion的好奇

代码很好,应该可以编译(确实可以编译);这是 a bug in the IDE.

有关复制赋值运算符的错误消息完全是误导;虽然复制赋值运算符 删除,但移动赋值运算符没有,在这种情况下,它将被调用,因为 make_unique() returns a unique_ptr 按值,这是一个右值。