------- Comment #6 from jason at gcc dot gnu dot org 2010-08-09 17:34 ------- 14.1 paragraph 11 says,
If a template-parameter of a class template is a template parameter pack, it shall be the last template-parameter. This isn't quite right: what we really want to require is that if a partial-specialization argument (or the equivalent transformed parameter for a primary template) is a pack expansion, it is the last one. But that also applies to your testcase #5, which is ill-formed. Your testcase in comment #4 is OK because none of the partial specialization arguments are pack expansions. As Paolo says, we ought to give a better error. -- jason at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Keywords| |diagnostic Last reconfirmed|0000-00-00 00:00:00 |2010-08-09 17:34:37 date| | Summary|[C++0x] Can't access nested |[C++0x] unhelpful diagnostic |type of a partial class |for parameter pack that is |specialization involving |not last |variadic parameters | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45236