为什么没有为派生类创建默认的移动构造函数或赋值运算符?证明我的意思;有这个设置代码:
#include <utility>
struct A
{
A () { }
A (A&&) { throw 0; }
A& operator= (A&&) { throw 0; }
};
struct B : A
{ };
以下任一行抛出:
A x (std::move (A ());
A x; x = A ();
但以下都不是:
B x (std::move (B ());
B x; x = B ();
万一这很重要,我用 GCC 4.4 进行了测试。
编辑:稍后使用 GCC 4.5 进行的测试显示了相同的行为。