https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93394
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> --- GCC is correct (and we have at least one duplicate of this bug). When name lookup finds the same name in more than one base class the program is ill-formed. Overload resolution is not performed to select the best overload. You can fix it with: struct B : A, T { using A::operator*; using T::operator*; }; Now name lookup finds both overloads in the same scope, and then performs overload resolution to choose the best match.