Tag:

为什么没有默认的移动赋值/移动构造函数?

我是一个简单的程序员。 我的类成员variables通常由PODtypes和STL容器组成。 正因为如此,我很less必须编写赋值操作符或复制构造函数,因为这些都是默认实现的。 std::move ,如果我使用std::move不可移动的对象,它会使用赋值运算符,这意味着std::move是完全安全的。 因为我是一个简单的程序员,所以我想利用移动function,而不必为我编写的每个类添加移动构造器/赋值运算符,因为编译器可以简单地将它们实现为“ this->member1_ = std::move(other.member1_);… “ 但它不(至less在Visual 2010中),是否有任何特别的原因呢? 更重要的是; 有什么办法可以解决这个问题吗? 更新:如果你看低于GManNickG的答案,他提供了一个伟大的macros。 如果你不知道,如果你实现移动语义,你可以删除交换成员函数。