OSDN Git Service

PR c++/9335
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / template / init8.C
1 // PR c++/36089
2 // { dg-do run }
3
4 extern "C" void abort ();
5
6 int f ()
7 {
8   const int c(2);
9   int d[c] = { 0, 0 };
10   return d[0] + sizeof d;
11 }
12
13 struct A
14 {
15   static int f ()
16   {
17     const int c(2);
18     int d[c] = { 0, 0 };
19     return d[0] + sizeof d;
20   }
21 };
22
23 template <int> struct B
24 {
25   static int f ()
26   {
27     const int c = 2;
28     int d[c] = { 0, 0 };
29     return d[0] + sizeof d;
30   }
31 };
32
33 template <int> struct C
34 {
35   static int f ()
36   {
37     const int c(2);
38     int d[c] = { 0, 0 };
39     return d[0] + sizeof d;
40   }
41 };
42
43 template <int> struct D
44 {
45   static int f ()
46   {
47     const int e(2);
48     const int c(e);
49     int d[c] = { 0, 0 };
50     return d[0] + sizeof d;
51   }
52 };
53
54 int
55 main (void)
56 {
57   int v = f ();
58   if (v != 2 * sizeof (int))
59     abort ();
60   if (v != A::f ())
61     abort ();
62   if (v != B<6>::f ())
63     abort ();
64   if (v != C<0>::f ())
65     abort ();
66   if (v != D<1>::f ())
67     abort ();
68 }