Нашел еще один глюк у BCB6.0 нарушающий основополагающий принцип — RAII:
#include <iostream>
#include <memory>
using namespace std;
class Outer
{
public:
~Outer()
{
cout << "~Outer" << endl;
}
};
class Inner
{
public:
Inner()
{
throw 1;
}
~Inner()
{
cout << "~Inner" << endl;
}
};
int main()
{
try
{
auto_ptr<Outer> outer(new Outer());
auto_ptr<Inner> inner(new Inner());
}
catch (...)
{
cin.get();
}
}
ни за что не угадаете, что в результате:
~Inner
з.ы. естественно проверил (copy/paste) в gcc — там усе как нада — ~Outer
з.ы2. как такое вообще возможно?