https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102802
TC <rs2740 at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |rs2740 at gmail dot com --- Comment #3 from TC <rs2740 at gmail dot com> --- No, this is valid. B's operator() is not visible, but its conversion to function pointer is, and that introduces a surrogate call function during the overload resolution for the function call expression (and it's selected because it is the only viable candidate).