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