Уже существует вопрос, в котором говорится о "реальном" поведении delete
с указателем на базовый класс, которому не хватает виртуального деструктора, но вопрос ограничен очень ограниченным случаем (производный класс не имеет членов с нетривиальными деструкторами), и принятый ответ просто говорит, что нет способа узнать, не проверяя поведение каждого компилятора.
.... но это на самом деле не очень полезно; зная, что каждый компилятор может вести себя по-другому, не говорит нам ничего о поведении какого-либо конкретного компилятора. Итак, что делают Clang и g++ в этом случае? Я бы предположил, что они просто вызовут деструктор базового класса, а затем освободят память (для всего производного класса). Это тот случай?
Или, если это невозможно определить для всех версий GCC и Clang, как насчет GCC 4.9 и 5.1 и Clang 3.5 до 3.7?