------- Comment #1 from reichelt at gcc dot gnu dot org 2008-04-20 19:42
-------
Slightly simpler testcase:
================================================================
template<int, typename...> struct A {};
template<typename> struct B;
template<typename... T> struct B<A<1, T...> > {};
template<typename... T> struct B<A<sizeof...(T), T...> > {};
B<A<1, char> > b;
================================================================
This has been fixed on mainline by
2008-03-27 Douglas Gregor <[EMAIL PROTECTED]>
* pt.c (tsubst_copy) <case SIZEOF_EXPR>: Cope with
tsubst_pack_expansion returning a pack expansion, or a TREE_VEC
ending in a pack expansion, both of which can occur when
substituting into a nested template.
(tsubst_copy_and_build) <case SIZEOF_EXPR>: When we're
instantiating the sizeof...(X) form, make tsubst_copy do the work.
* parser.c (cp_parser_template_parameter): Deal with unnamed
non-type template parameter packs identified by pack expansions in
the parameter type.
Doug, are you going to backport the patch to the 4.3 branch?
--
reichelt at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |doug dot gregor at gmail dot
| |com, reichelt at gcc dot gnu
| |dot org
Status|UNCONFIRMED |NEW
Ever Confirmed|0 |1
Keywords| |ice-on-invalid-code
Last reconfirmed|0000-00-00 00:00:00 |2008-04-20 19:42:14
date| |
Target Milestone|--- |4.3.1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35813