http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57384
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Eric Niebler from comment #0) > I believe all of the following 4 test cases should pass: I'll leave it to someone else to rule on that, they make my head hurt ;) I will note that this works: using type2 = list<int(Ts)...>; and this works: using type4 = list<int(*)(Ts)...>; And of course all these work: template<class X> using F = int(X); using type1 = void(F<Ts>...); using type2 = list<F<Ts>...>; template<class X> using Fp = int(*)(X); using type3 = void(Fp<Ts>...); using type4 = list<Fp<Ts>...>;