相关疑难解决方法(0)

为什么没有默认的move-assignment/move-constructor?

我是一个简单的程序员.我的类成员变量通常由POD类型和STL容器组成.因此,我很少需要编写赋值运算符或复制构造函数,因为这些是默认实现的.

除此之外,如果我使用std::move不可移动的对象,它使用赋值运算符,这意味着std::move非常安全.

由于我是一个简单的程序员,我想利用移动功能,而不需要为我编写的每个类添加移动构造函数/赋值运算符,因为编译器可以简单地将它们实现为" this->member1_ = std::move(other.member1_);..."

但它没有(至少在Visual 2010中没有),有什么特别的原因吗?

更重要的是; 有没有办法解决这个问题?

更新: 如果你低头看GManNickG的答案,他会为此提供一个很棒的宏.如果你不知道,如果你实现了移动语义,你可以删除交换成员函数.

c++ pod move-semantics c++11

87
推荐指数
4
解决办法
4万
查看次数

标签 统计

c++ ×1

c++11 ×1

move-semantics ×1

pod ×1