https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105702
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- Although it's possible this could be trying to define B::operator= or some other member function, we should assume from the return type and parameter type that it's A::operator=, which was declared and has not been defined yet. If we want to avoid bad fix-its, we could limit it to cases where all those clues are present: an invalid non-member operator= is defined where the return type is X& and the parameter type is either const X& or X&&, and the body of X declares (but does not define) an assignment op with exactly that signature.