https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64446
--- Comment #1 from petschy at gmail dot com --- One subtlety: template<typename T=void> struct Base3 { }; struct Foo3 : Base3 { }; In this case complaining about missing template params is probably inappropriate, since Base3<> is perfectly valid. So on second thought, the error should be about the missing <> after the class name.