1 // ehopt was only copying one statement from the cleanup of the B temporary
2 // into the following try block, so we lost its destructor call.
6 template <class T, class U>
16 A(int) { ++count; if (b) throw 1; }
17 A(const A&) { ++count; if (b) throw 1; }
18 ~A() { --count; if (b) throw 1; }
21 typedef A<int, int> B;
24 class A<void *, void *>
27 A() { if (b) throw 1; }
28 A(const B&) { if (b) throw 1; }
29 ~A() { if (b) throw 1; }
32 typedef A<void *, void *> C;
34 void f() { if (b) throw 1; }