ДА!
Я вижу, что вы думаете "практически" о том, какие разрушения могут быть пропущены.Учтите, что деструктор вашего производного класса - это не просто тело деструктора, которое вы пишете - в этом контексте вам также необходимо учитывать уничтожение членов, и ваше предложение может не привести к уничтожению вектора (потому что процедура, фактически не разрушающая ваш объект, не будетдаже знаю, что есть производная часть для рассмотрения).В векторе есть динамически размещаемое содержимое, которое будет вытекать.
Однако нам даже не нужно заходить так далеко.Поведение вашей программы не определено, период, конец истории.Оптимизатор может делать предположения на основании того, что ваш код действителен.Если это не так, вы можете и должны ожидать странного дерьма, которое может не соответствовать тому, как должны работать ваши ожидания от компьютера.Это потому, что C ++ - это абстракция, компиляция сложна, и вы заключили договор с языком.