спасибо, конечно, но такое решение для такого ничтожного вопроса, если честно, это как из пушки по воробьям.
Ну ответ уже найден:
E>Насколько я понял, невозможно изменить указатель так, чтобы неквалифицированный E>вызов a->do_it() привел бы к вызову виртуальной функции какого-либо базового класса E>в иерархии.
Правильно. Если do_it переопределена в наследниках, то будет вызван именно вариант из самого нижнего наследника, содержащего переопределение.