Почему по умолчанию не создан конструктор перемещения или оператор присваивания для производных классов? Чтобы продемонстрировать, что я имею в виду; имея этот код настройки:
#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 показали то же поведение.