https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82193
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- [basic.scope.class] p2: "A name N used in a class S shall refer to the same declaration in its context and when re-evaluated in the completed scope of S. No diagnostic is required for a violation of this rule." So the code is ill-formed, no diagnostic required. GCC is allowed to reject it. The other compilers fail to diagnose it (which is also conforming).