https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113830
--- Comment #8 from Jonathan Wakely <redi at gcc dot gnu.org> --- The point is that the standard does not require a diagnostic for all invalid code. If the rule in the standard is specified as "ill-formed, no diagnostic required" then implementations are allowed to ignore it. For example, because the T::unknown only appears in an unused default argument, or an unused noexcept-specifier. In other words "clang gives an error" does not mean "gcc MUST give an error". But it would be nice if we did give an error, even if it's not required. Either way, I don't think this has anything to do with the "compiler's name-binding process". We just don't care that T::unknown is invalid if we don't use it.