https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102609
--- Comment #9 from Jonathan Wakely <redi at gcc dot gnu.org> --- If we're right about that, then I agree that a warning would be useful for classes that have no such implicit conversion from S to S*. I think the warning would give a false positive in the case below, so a way to disable it locally would be needed (e.g. via a diagnostic pragma). struct S { int f(this S*); // warning: explicit object parameter of pointer type can only match if an implicit conversion to S* exists }; struct T : S { operator T*(); }; T t; int i = t.f(); // derived class has the required conversion