C ++ RAII не работает?

Я только начинаю работать с RAII в C ++ и настраиваю небольшой тестовый пример. Либо мой код сильно сбит с толку, либо RAII не работает! (Я думаю, что это первое).

Если я бегу:

#include <exception>
#include <iostream>
class A {
public:
    A(int i) { i_ = i; std::cout << "A " << i_ << " constructed" << std::endl; }
    ~A() { std::cout << "A " << i_ << " destructed" << std::endl; }
private:
    int i_;
};

int main(void) {
    A a1(1);
    A a2(2);
    throw std::exception();
    return 0;
}

с закомментированным исключением я получаю:

A 1 constructed
A 2 constructed
A 2 destructed
A 1 destructed

как и ожидалось, но за исключением я получаю:

A 1 constructed
A 2 constructed
terminate called after throwing an instance of 'std::exception'
  what():  std::exception
Aborted

поэтому мои объекты не разрушены, даже если они выходят за рамки видимости. Разве это не вся основа для РАИИ.

Указатели и исправления очень ценятся!

Ответы на вопрос(10)

Ваш ответ на вопрос