C++程序  |  29行  |  488 B

// { 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;
}