https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100335
--- Comment #4 from W E Brown <webrown.cpp at gmail dot com> --- I won't comment on any compiler's behavior, but do want to thank you for reminding me of [namespace.udecl]/14: "When a using-declarator brings declarations from a base class into a derived class, member functions ... in the derived class override and/or hide member functions .. with the same name, parameter-type-list ..., and ref-qualifier (if any), in a base class...." Upon reflection, I believe that [namespace.udecl]/14 does not apply to the original example because the ref-qualifier on Derived::method (i.e., none) is not "the same" as the ref-qualifier on either Base::method. Thus, there's no overriding and/or hiding to be done there. However, I believe that [namespace.udecl]/14 *does* apply to the example in Comment 3, where Base::method and Derived::method do have "the same" ref-qualifier (i.e., none). There, Derived::method ought to hide Base::method as [over.load]/2.3 seems be inapplicable. In brief, I believe Comment 3's example ought compile due to [namespace.udecl]/14, but the original example ought not compile due to [over.load]/2.3.