------- Comment #1 from jason at gcc dot gnu dot org 2009-04-05 19:35 ------- I'd write that as
template <class... Types> struct S; template <class T, class ...Types> struct S<T, Types...> { typedef typename S<Types...>::type type; }; template <class T> struct S<T> { typedef T type; }; -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39653