------- Comment #4 from dgregor at gcc dot gnu dot org 2008-01-11 14:11 ------- This code is ill-formed, and should be rejected because "Args" cannot be deduced from "typename Args::is_applied". Interestingly enough, this problem actually has nothing to do with variadic templates: take away the parameter pack and we still accept this ill-formed code:
template<typename T> struct ugh {}; template<typename T> struct ugh<typename T::is_applied> { }; The problem is that, when we're marking template parameters in process_partial_specialization via for_each_template_parm, we mark *all* template parameters, not just those that are in deduced contexts. I'm working on a fix now... -- dgregor at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |dgregor at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Keywords|ice-on-invalid-code |accepts-invalid Last reconfirmed|2007-11-19 04:44:27 |2008-01-11 14:11:27 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33964