* decl.c (make_typename_type): s/parameters/arguments/.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / pr33955.C
blob7d3f6b6649e230f317870ade01523f90fabccdce
1 // { dg-do compile { target c++11 } }
2 template<typename T>
3 struct uncvref
5   typedef T type;
6 };
8 template<typename... Args>
9 struct args
11   static const int size = sizeof...(Args);
14 template<typename G, typename E, typename S, typename V, long GN = G::size, long EN = E::size>
15 struct apply_args;
17 template<typename... G, typename... E, typename S, typename V, long N>
18 struct apply_args<args<G...>, args<E...>, S, V, N, N>
20   typedef args<
21     typename G::template apply<typename uncvref<E>::type, S, V>::type...
22     > type;
25 struct or_
27   template<typename E, typename S, typename V>
28   struct apply {
29     typedef typename E::type type;
30   };
33 template<typename T>
34 struct identity
36   typedef T type;
39 apply_args<args<or_>, args<identity<int>>, float, double> a1;