// { dg-do compile { target c++11 } } template struct uncvref { typedef T type; }; template struct args { static const int size = sizeof...(Args); }; template struct apply_args; template struct apply_args, args, S, V, N, N> { typedef args< typename G::template apply::type, S, V>::type... > type; }; struct or_ { template struct apply { typedef typename E::type type; }; }; template struct identity { typedef T type; }; apply_args, args>, float, double> a1;