Я также предположил, что компилятор не генерирует код относительно «a», поскольку на него не ссылаются, но все же это неправильное поведение, поскольку деструктор делает что-то, что должно быть выполнено.
Итак, я попробовал в VS2008 / vc9 (+ SP1) отладку и выпуск, и ~ A вызывается после того, как генерируется исключение, выход из f () - это правильное поведение, если я прав. 1003 *
Теперь я только что попробовал с VS2005 / vc8 (+ SP1), и это то же самое поведение.
Я использовал контрольные точки, чтобы быть уверенным. Я только что проверил с консолью, и у меня тоже есть сообщение "~ A". Может, ты где-то ошибся?