// { dg-do run } | |
// Test that an exception thrown out of the constructor for the exception | |
// object (i.e. "after completing evaluation of the expression to be thrown | |
// but before the exception is caught") causes us to call terminate. | |
#include <exception> | |
#include <cstdlib> | |
void my_terminate () | |
{ | |
std::exit (0); | |
} | |
struct A | |
{ | |
A () {} | |
A (const A&) { throw 1; } | |
}; | |
int main (void) | |
{ | |
std::set_terminate (my_terminate); | |
A a; | |
try { throw a; } | |
catch (...) {} | |
return 1; | |
} |