重新分配unique_ptr

时间:2015-09-23 07:08:14

标签: c++ c++14 unique-ptr clion

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

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

Screenshot

但就此而言:

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

没有抱怨。

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

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

1 个答案:

答案 0 :(得分:8)

代码很好,它应该编译(确实如此);这是a bug in the IDE

关于复制赋值运算符的错误消息完全是误导性的;当复制赋值运算符 被删除时,移动赋值运算符不会,并且在这种情况下,它将被调用,因为make_unique()按值返回unique_ptr,这是一个右值。