在此代码中,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的好奇心。
答案 0 :(得分:8)
代码很好,它应该编译(确实如此);这是a bug in the IDE。
关于复制赋值运算符的错误消息完全是误导性的;当复制赋值运算符 被删除时,移动赋值运算符不会,并且在这种情况下,它将被调用,因为make_unique()
按值返回unique_ptr
,这是一个右值。