OSDN Git Service

cb8a5241a1713c1cd63302ee42f76bfda2fd17f9
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.old-deja / g++.pt / static11.C
1 // Bug: g++ was failing to destroy C<int>::a because it was using two
2 // different sentry variables for construction and destruction.
3 //
4 // Some targets (e.g. those with "set_board_info needs_status_wrapper 1"
5 // in their dejagnu baseboard description) require that the status is
6 // final when exit is entered (or main returns), and not "overruled" by a
7 // destructor calling _exit.  It's not really worth it to handle that.
8 // Skip if target: mmix-knuth-mmixware
9
10 extern "C" void _exit (int);
11
12 int r = 1;
13
14 struct A
15 {
16   void f(){};
17   A(){ ++r; }
18   ~A(){ r -= 2; _exit (r); }
19 };
20
21 template<class T>
22 struct C
23 {
24   C(){ a.f(); }
25   static A a;
26 };
27
28 template <class T> A C<T>::a;
29 typedef C<int> B;
30
31 int main()
32 {
33   C<int> c;
34   return r;
35 }