https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97202
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- PR 104437 pointed out that the invalid constructor is accepted if it has a redundant inline specifier: template<typename Base> struct S : Base { inline S<Base>() {} };