OSDN Git Service

/cp
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / cpp0x / noexcept04.C
1 // Make sure that we call terminate when a noexcept spec is violated.
2 // The function pointers are there to make sure that
3 // the compiler doesn't get clever about optimizing the calls based on
4 // knowledge about the called functions.
5
6 // { dg-options "-std=c++0x" }
7 // { dg-do run }
8
9 #include <exception>
10 #include <cstdlib>
11
12 void my_terminate ()
13 {
14   std::exit (0);
15 }
16
17 void g() { throw 1; }
18 void (*p1)() = g;
19 void f() noexcept { p1(); }
20 void (*p2)() = f;
21 void h() { p2(); }
22
23 int main()
24 {
25   std::set_terminate (my_terminate);
26
27   try { h(); }
28   catch (int) { }
29
30   return 1;
31 }