Как я знаю, любой класс, предназначенный для создания подклассов, должен быть объявлен с виртуальным деструктором, чтобы экземпляры класса могли быть уничтожены должным образом при доступе к ним через указатели.
Но почему вообще возможно объявить такой класс с невиртуальным деструктором? Я полагаю, что компилятор может решить, когда использовать виртуальные деструкторы. Так что, это недосмотр разработчиков C++, или я чего-то не понимаю?