PR c++/85553
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / alias-decl-44.C
blobbd20b54f142e3dfc3b4a062b78391df80ed506d4
1 // PR c++/63849
2 // { dg-do compile { target c++11 } }
4 template <class _T, class...>
5 using First = _T;            // we should not use this
6                              // alias with only
7                              // one pack parameter (?)
9 template <template <class...> class _Successor,
10           int,
11           class... _Xs>
12 struct Overlay
14     using O = _Successor<_Xs...>;
17 template <class... _Pack>
18 struct List
20     template <int _s>
21     using O = typename Overlay<List, _s, _Pack...>::O;
23     template <template <class...> class _S>
24     using Pass = _S<_Pack...>;
26     template <int _i>
27     using At = typename O<_i>
28     ::template Pass<First>;
31 template <int _i>
32 using At = typename List<int, char>
33 ::template At<_i>;
35 template <int _i>
36 void func_crash(At<_i>&) {}
38 int main(int argc, char *argv[])
40     char ccc;
41     int iii;
42     func_crash<0>(iii);