29 lines
488 B
C
29 lines
488 B
C
// { 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;
|
|
}
|