https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66836
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- To clarify what I mean, consider: struct X { void f(); void g() { void f(); f(); } }; The declaration of void f() inside X::g doesn't refer to X::f, because it declares a (non-member) function called f. And so does "friend void f();"