В Qaru post Проверка типа объекта в С++ 11, у меня есть комментарий:
В С++ 11 вы действительно захотите сделать
virtual ~A() = default;
В противном случае вы потеряете конструкторы перемещения implict.
Что такое virtual ~A() = default;
для? Как происходит неявное перемещение конструкторов, потерянных с помощью virtual ~A() {}
?