我只是个简单的程序员。我的类成员变量通常由 POD 类型和 STL 容器组成。因此,我很少需要编写赋值运算符或复制构造函数,因为它们是默认实现的。
此外,如果我对不可移动的对象使用 std::move
,它会使用赋值操作符,这意味着 std::move
是完全安全的。
因为我是一个简单的程序员,所以我希望能够利用 move 功能,而不需要在我编写的每个类中添加 move 构造函数/赋值操作符,因为编译器可以简单地将它们实现为“ this->member1_ = std::move(other.member1_);...
”
但是它没有(至少在 Visual2010中没有) ,有什么特别的原因吗?
更重要的是 有什么办法能避开这个吗?
更新: 如果你低头看 GManNickG 的答案,他提供了一个伟大的宏观这一点。如果您不知道,如果您实现 move 语义,您可以删除交换成员函数。