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

Reply via email to