4
为什么没有默认的移动分配/移动构造函数?
我是一个简单的程序员。我的班级成员变量通常由POD类型和STL容器组成。因此,我很少需要编写赋值运算符或复制构造函数,因为它们是默认实现的。 此外,如果我std::move在不可移动的对象上使用它,则使用赋值运算符,这std::move是绝对安全的。 因为我是一个简单的程序员,所以我想利用移动功能,而不必在我编写的每个类中添加移动构造函数/赋值运算符,因为编译器可以将它们简单地实现为“ this->member1_ = std::move(other.member1_);...” 但这不是(至少在Visual 2010中不是),是否有任何特殊原因? 更重要的是; 有什么办法可以解决这个问题? 更新: 如果您不看GManNickG的答案,他为此提供了一个很好的宏。如果您不知道,如果您实现了移动语义,则可以删除掉swap成员函数。