On mainline the compiler issues a broken diagnostic for the following invalid code snippet:
======================================================= template<int> struct A { template<int> void foo(); }; template<> template<double> void A<0>::foo() { X; } ======================================================= bug.cc:6: error: 'double' is not a valid type for a template constant parameter bug.cc: In member function 'void A<<anonymous> >::foo() [with int <anonymous> = #'tree_list' not supported by dump_expr#<expression error>, int <anonymous> = 0]': bug.cc:8: error: 'X' was not declared in this scope The bug appeared between 2007-10-13 and 2007-11-13. -- Summary: [4.3 regression] Broken diagnostic: 'tree_list' not supported by dump_expr 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=34611