https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71833
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2016-07-11 CC| |msebor at gcc dot gnu.org Summary|ICE on valid C++11 code |[5/6/7 regression] ICE on |with nested variadic |valid C++11 code with |templates: tree check: |nested variadic templates: |accessed elt 0 of tree_vec |tree check: accessed elt 0 |with 1 elts in |of tree_vec with 1 elts in |coerce_template_parameter_p |coerce_template_parameter_p |ack, at cp/pt.c:7439 |ack, at cp/pt.c:7439 Ever confirmed|0 |1 Known to fail| |4.9.3, 5.3.0, 6.1.0, 7.0 --- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> --- Confirmed with r208178 committed in the 4.9.0 cycle as the root cause of the ICE. r208178 | jason | 2014-02-26 12:08:20 -0500 (Wed, 26 Feb 2014) | 10 lines PR c++/54440 * pt.c (get_template_parm_index): New. (fixed_parameter_pack_p_1, fixed_parameter_pack_p): New. (process_template_parm): Allow bare packs in template template parm template parms. (coerce_template_parameter_pack): Handle fixed template template parm packs and fixed packs not at the end of the parm list. (coerce_template_parms): Handle template parm packs not at the end of the parm list. (gen_elem_of_pack_expansion_instantiation): Handle a decl expansion. r208177 rejects the test case with the error below. So does EDG eccp 4.11, with a similar error. But Clang accepts it, so I'm not sure whether or not it's valid without some studying of the standard. error: parameter pack ‘<anonymous>’ must be at the end of the template parameter list template < Ts ..., typename ... Us > struct B {}; ^ t.C:8:7: error: ‘B’ in ‘struct A<>’ does not name a template type A <>::B < int > e; ^