// { dg-do run } | |
// simplified from testcase in Windows Developer Journal, | |
// submitted by eyal.ben-david@aks.com | |
// The initialization of a static local variable must be retried if a | |
// previous try finished by throwing an exception [stmt.dcl]/4 | |
extern "C" void abort (); | |
struct foo { | |
foo() { throw true; } | |
}; | |
void bar() { | |
static foo baz; | |
} | |
int main() { | |
try { | |
bar(); // must throw | |
} | |
catch (bool) { | |
try { | |
bar(); // must throw again! | |
} | |
catch (bool) { | |
return 0; | |
} | |
} | |
abort(); | |
} |