// { dg-do run } // Bug: g++ fails to treat function-try-blocks in ctors specially. // Submitted by Jason Merrill int c; int r; struct A { int i; A(int j) { i = j; } ~A() { c += i; } }; struct B: public A { A a; B() try : A(1), a(2) { throw 1; } catch (...) { if (c != 3) r |= 1; } }; int main () { try { B b; } catch (...) { c = 0; } if (c != 0) r |= 2; return r; }