Деструкторы не являются обычными функциями. Вызов не вызывает одну функцию, он вызывает много функций. Это магия деструкторов. В то время как вы предоставили тривиальному деструктору с единственной целью сделать так, чтобы ему было трудно показать, как он может сломаться, вы не смогли продемонстрировать, что делают другие вызываемые функции. И ни один не делает стандарт. В тех функциях, которые потенциально могут развалиться.
В качестве тривиального примера предположим, что компилятор вставляет код для отслеживания времени жизни объекта в целях отладки. Конструктор [который также является магической функцией, которая делает все, о чем вы не просили], хранит некоторые данные где-то с надписью «Вот я». Перед тем, как вызывается деструктор, он изменяет эти данные, чтобы сказать «Вот и я». После вызова деструктора он избавляется от информации, которую использовал для поиска этих данных. Поэтому в следующий раз, когда вы вызовете деструктор, вы получите нарушение прав доступа.
Возможно, вы также могли бы придумать примеры, которые включают виртуальные таблицы, но ваш пример кода не содержал никаких виртуальных функций, так что это было бы обманом.