The following invalid testcase triggers an ICE on mainline: ========================================= template<void> struct A { A(); virtual ~A(); }; A<0> a; ========================================= bug.cc:1: error: 'void' is not a valid type for a template constant parameter bug.cc:3: error: templates may not be 'virtual' bug.cc: In instantiation of 'A<<expression error> >': bug.cc:7: instantiated from here bug.cc:3: internal compiler error: in finish_member_declaration, at cp/semantics.c:2243 Please submit a full bug report, [etc.] If I remove the constructor or destructor, the ICE happens in the same place as PR 24791. This is probably fallout from PR 27668.
Confirmed.
This doesn't ICE for me on current mainline: bug.cc:1: error: 'void' is not a valid type for a template constant parameter bug.cc:3: error: templates may not be 'virtual' bug.cc:7: error: '<type error>' is not a valid type for a template constant parameter bug.cc:7: error: invalid type in declaration before ';' token Can anyone confirm that the testcase still ICE's for them?
Fixed since at least "4.2.0 20060826".