PR c++/81917 - ICE with void_t and partial specialization.
[official-gcc.git] / gcc / testsuite / g++.dg / template / typedef35.C
blob2dddf0966abd9187c72b5e43610836abbf976f21
1 // Origin c++/45558
2 // { dg-do compile }
4 template <typename S, typename T>
5 struct C
7   template <typename U>
8   struct B
9   {
10     template <typename W>
11     struct E
12     {
13       explicit E(const W &x) : w(x) {}
14       const W &w;
15     };
16   };
19 struct F;
20 template <typename X>
21 struct D
23   D() {}
26 const D<F> g;
27 template <typename S, typename T>
28 struct A
30   template <typename U>
31   struct B : C<S, T>::template B<U>
32   {
33     typedef typename C<S, T>::template B<U> V;
34     static const D<typename V::template E<D<F> > > a;
35   };
38 template <typename S, typename T>
39 template <typename U>
40 const D<typename C<S, T>::template B<U>::template E<D<F> > >
41 A<S, T>::B<U>::a = typename C<S, T>::template B<U>::template E<D<F> >(g);