summaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.old-deja/g++.eh/terminate1.C
blob: 623fb84009c9872675c33eb0e4c413164f29909f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// { dg-do run }
// Test that an exception thrown out of the constructor for the catch
// parameter (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);

  try { throw A(); }
  catch (A) {}
  return 1;
}