Since gcc 3.3.3 the compiler issues a duplicate diagnostic for the following invalid code snippet (before we got an ICE):
========================================= template<typename T> struct A { template<T> struct B; }; A<void> a; ========================================= bug.cc: In instantiation of 'A<void>': bug.cc:6: instantiated from here bug.cc:3: error: 'void' is not a valid type for a template constant parameter bug.cc:3: error: 'void' is not a valid type for a template constant parameter -- Summary: duplicate diagnostic for invalid template constant parameter Product: gcc Version: 4.0.0 Status: UNCONFIRMED Keywords: diagnostic Severity: normal Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: reichelt at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19502