http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50830
--- Comment #7 from Daniel Krügler <daniel.kruegler at googlemail dot com> 2011-10-23 10:02:19 UTC --- I can only guess that there is a compiler defect in regard to handling variadic template template parameters. The corresponding example template<class...> struct S; template<class...> struct X; template<class... Ts, class T> struct X<S<Ts...>, T> {}; X<S<int, bool>, double> x; is accepted as expected.