PR c++/81917 - ICE with void_t and partial specialization.
[official-gcc.git] / gcc / testsuite / g++.dg / template / init8.C
blob1bcda1253d1b1690a09f173fe180875cef051507
1 // PR c++/36089
2 // { dg-do run }
4 extern "C" void abort ();
6 int f ()
8   const int c(2);
9   int d[c] = { 0, 0 };
10   return d[0] + sizeof d;
13 struct A
15   static int f ()
16   {
17     const int c(2);
18     int d[c] = { 0, 0 };
19     return d[0] + sizeof d;
20   }
23 template <int> struct B
25   static int f ()
26   {
27     const int c = 2;
28     int d[c] = { 0, 0 };
29     return d[0] + sizeof d;
30   }
33 template <int> struct C
35   static int f ()
36   {
37     const int c(2);
38     int d[c] = { 0, 0 };
39     return d[0] + sizeof d;
40   }
43 template <int> struct D
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   }
54 int
55 main (void)
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 ();