在这段代码中,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++编译OK,必须由任何C++14编译器编译。这只是对CLion的好奇。
发布于 2015-09-23 07:14:49
代码很好,应该编译(而且确实编译);这是IDE中的一个bug。
有关复制赋值操作符的错误消息完全具有误导性;当复制赋值操作符被删除时,移动赋值运算符不会被调用,在本例中,它将被调用,因为make_unique()按值返回unique_ptr,这是一个rvalue。
https://stackoverflow.com/questions/32733147
复制相似问题