重新分配 unique_ptr
Reassigning unique_ptr
在这段代码中,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()
returns a unique_ptr
按值,这是一个右值。
在这段代码中,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()
returns a unique_ptr
按值,这是一个右值。