// PR c++/66451 | |
// { dg-do run } | |
#if __cplusplus > 201100L | |
#define THROWING noexcept(false) | |
#else | |
#define THROWING | |
#endif | |
extern "C" void abort(); | |
int c; | |
struct A | |
{ | |
int a; | |
A(int new_a) : a(new_a) { ++c; } | |
A(const A&); // not defined | |
~A() THROWING | |
{ | |
--c; | |
if(a==4) | |
throw a; | |
} | |
}; | |
struct B | |
{ | |
A a[2]; | |
~B() { } | |
}; | |
int sink; | |
int main() | |
{ | |
try { | |
B b = {3,4}; | |
} catch(...) { } | |
if (c != 0) abort(); | |
} |