https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109740
--- Comment #4 from Alexander Goomenuk <emerg.reanimator at gmail dot com> --- https://en.cppreference.com/w/cpp/language/using_declaration # In class definition ... If the derived class already has a member with the same name, parameter list, and qualifications, *the derived class member hides or overrides (doesn't conflict with) the member that is introduced from the base class*. ---- https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Woverloaded-virtual In cases where the different signatures are not an accident, the simplest solution is to add a *using-declaration to the derived class to un-hide the base function*, e.g. add using A::f; to B. ---- These two statements contradict each other, isn't it?