我经常发现自己为具有许多成员变量的类编写乏味的移动构造函数。它们看起来如下所示:
A(A && rhs) :
a(std::move(rhs.a)),
b(std::move(rhs.b)),
c(std::move(rhs.c)),
d(std::move(rhs.d)) {
some_extra_work();
}
也就是说,它们执行与默认移动构造函数相关的所有操作,然后执行一些平凡的额外任务。理想情况下,我会委托给默认的移动构造函数,然后执行额外的工作,但是定义我自己的移动构造函数的行为会阻止定义默认实现,这意味着没有什么可以委托的。
有没有一种很好的方法来绕过这种反模式?