http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56506
--- Comment #3 from Michael Mehlich <mmehlich at semanticdesigns dot com> 2013-03-04 16:58:45 UTC --- Considering that based on 14.5.3(5) a template member declaration X<Y<Z<T...>,T>...>::type x; with T bound to int,bool,char must expand to X<Y<Z<int,bool,char>,int>, Y<Z<int,bool,char>,bool>, Y<Z<int,bool,char>,char>>::type x; I'd consider it rather counter-intuitive if I cannot get a match as described in my original message. Does the standard actually specify how the matching process works in detail in the presence of variadic templates? Going through the template section, I haven't found anything definite that would put light onto this issue (though I might have missed it). I can't really understand your "because it is not followed by ..."; after all, in X<Y<Z<T...>, U>...> the parameter pack U is also not immediately followed by a ..., so why is that case ok but my original one isn't? It is pretty easy to implement a matcher that successfully matches the case in the original message, so I don't think the standard has any excuse not to consider this a successful match, either. Notwithstanding that, the standards committee might have decided otherwise. If so, where does it say so in the standard, resp. how can I conclude this from what I can find in there? -- Michael