A broken diagnostic is issued by mainline for the following code snippet: =============================================================== template<int> struct A { template<template<void> class> struct B {}; };
A<0> a; =============================================================== bug.cc:3: error: 'void' is not a valid type for a template constant parameter bug.cc: In instantiation of 'A<0>': bug.cc:6: instantiated from here bug.cc:3: error: type/value mismatch at argument 1 in template parameter list for 'template<int <anonymous> > template<template<template<<declaration error> > class<template-parameter-2-1> > template<int <anonymous> > template<<declaration error> > class<template-parameter-2-1> > struct A<<anonymous> >::B' bug.cc:3: error: expected a template of type 'template<int <anonymous> > template<<declaration error> > class<template-parameter-2-1>', got '#'template_template_parm' not supported by dump_decl#<declaration error>' bug.cc:3: error: type/value mismatch at argument 1 in template parameter list for 'template<int <anonymous> > template<template<template<<declaration error> > class<template-parameter-2-1> > template<int <anonymous> > template<<declaration error> > class<template-parameter-2-1> > struct A<<anonymous> >::B' bug.cc:3: error: expected a template of type 'template<int <anonymous> > template<<declaration error> > class<template-parameter-2-1>', got '#'template_template_parm' not supported by dump_decl#<declaration error>' First, the error message includes: 'template_template_parm' not supported by dump_decl Second, the error message is given twice. Btw, the code triggered an ICE in GCC 4.2.x. -- Summary: [4.3 regression] Broken diagnostic: 'template_template_parm' not supported by dump_decl Product: gcc Version: 4.3.0 Status: UNCONFIRMED Keywords: diagnostic, monitored Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34274