Как-то ускользнул от меня раньше этот момент. Оказывается, деструктор тоже может быть чисто виртуальным. В стандарте про это всего лишь строчка [12.4.7]. Похоже, сделано это, чтобы иметь возможность запретить инстанциирование в случае, когда в классе вообще отсутствуют виртуальные функции. В общем-то тоже самое, что и в случае чисто виртуальных функций, только у чисто виртуальных функций определение опционально, а у чисто виртуального деструктора оно обязательно.
Итак имеется базовый класс без виртуальных функций. Полиморфное использование отпадает. Чего тогда с этим делать? Единственное пришедшее в голову неэкзотическое применение - при создании классов, предназначенных для использования в качестве базовых при наследовании реализации (private-наследовании). Слишком накручено? Или у меня сегодня плохо с фантазией?
Итак имеется базовый класс без виртуальных функций. Полиморфное использование отпадает. Чего тогда с этим делать? Единственное пришедшее в голову неэкзотическое применение - при создании классов, предназначенных для использования в качестве базовых при наследовании реализации (private-наследовании). Слишком накручено? Или у меня сегодня плохо с фантазией?

