重新分配unique_ptr

vla*_*don 1 c++ unique-ptr c++14 clion

在此代码Jetbrains CLion抱怨说'unique_ptr::operator=(const unique_ptr &)' is deleted:

std::unique_ptr<std::string> test;
test = std::make_unique<std::string>();
Run Code Online (Sandbox Code Playgroud)

截图

但就此而言:

auto test2 = std::make_unique<std::string>();
Run Code Online (Sandbox Code Playgroud)

没有抱怨.

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

upd它由GCC,CLang和MSVC++编译好,并且必须由任何C++ 14编译器编译.这只是对CLion的好奇心.

The*_*ant 8

代码很好,它应该编译(确实如此); 这是IDE中的一个错误.

有关复制赋值运算符的错误消息完全是误导性的; 而拷贝赋值运算符删除,此举赋值运算符也没有了,在这种情况下,它会被调用,因为make_unique()回报unique_ptr的价值,这是一个右值.