https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116342
Jiang An <de34 at live dot cn> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |de34 at live dot cn --- Comment #3 from Jiang An <de34 at live dot cn> --- IIUC GCC and libstdc++ are doing the right thing - you're just not allowed to customize comparison for float. You wrote `using std::strong_order;` first, and std::strong_order is a function object, so the name lookup won't furtherly find functions of name strong_order. In the body of the operator() of the type of std::strong_oder, ADL is effectively not performed because the arguments are of floating-point type and have no associated namespace.