https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84709
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |rejects-valid Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- Proper testcase that actually shows the error: namespace A { class Foo { }; } using A::Foo; namespace B { class Bar { const Foo &Foo() const; }; } hide.cc:10:22: error: declaration of ‘const A::Foo& B::Bar::Foo() const’ [-fpermissive] const Foo &Foo() const; ^~~~~ hide.cc:2:9: error: changes meaning of ‘Foo’ from ‘class A::Foo’ [-fpermissive] class Foo { ^~~ Which can be reduced to: struct Foo { }; struct Bar { const Foo &Foo() const; }; The member function B::Bar::foo does hide ::Foo, and that violates [basic.scope.class]/2.