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

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

c&#43;&#43; - 重新分配unique_ptr-LMLPHP

但是在此:
auto test2 = std::make_unique<std::string>();

没有抱怨。

CLion是否正确?可以重新分配unique_ptr吗?

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

最佳答案

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

有关副本分配运算符的错误消息完全令人误解;虽然删除了副本分配运算符 ,但没有删除移动分配运算符,在这种情况下,将调用它,因为make_unique()按值返回unique_ptr,这是一个右值。

07-24 09:44
查看更多