关于此代码,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()
按值返回unique_ptr
,这是一个右值。