【发布时间】:2015-07-15 12:34:03
【问题描述】:
类 Foo 有一个右值引用构造函数,它移动 unique_ptrs 的包含向量,那么为什么下面的代码会给出以下错误,无论 main 中的 Foo() 上是否有 std::move?
error C2280: 'std::unique_ptr<SomeThing,std::default_delete<_Ty>> &std::unique_ptr<_Ty,std::default_delete<_Ty>>::operator =(const std::unique_ptr<_Ty,std::default_delete<_Ty>> &)' : attempting to reference a deleted function
class Foo{
public:
Foo(){
}
Foo(Foo&& other) :
m_bar(std::move(other.m_bar))
{};
std::vector<std::unique_ptr<SomeThing>> m_bar;
};
int main(int argc, char* argv[])
{
Foo f;
f = std::move(Foo());
return 0;
}
【问题讨论】:
标签: c++ move-semantics rvalue-reference