Я попросил пост с тот же заголовок. Но из-за неправильной интерпретации все ответы обсуждались, если это правильный код / поведение или нет.
Однако главный вопрос заключается в том, пойдет ли оптимизация или нет?
Со ссылкой на связанный пост, посмотрите подлинный случай:
D *pD = new D;
pD->foo(); // `D::foo()` is `final`
Будут ли оптимизированы все компиляторы pD->foo()
вызывать не включив виртуальный механизм?
Задача ещё не решена.
Других решений пока нет …