#include <functional> struct string { } s; bool operator<(const string&, const string&) { return false; } std::less<> lt; bool b = lt(s, s); This fails since the fix for PR 78420
Author: redi Date: Thu Mar 22 14:23:27 2018 New Revision: 258773 URL: https://gcc.gnu.org/viewcvs?rev=258773&root=gcc&view=rev Log: PR libstdc++/85040 fix std::less<void> etc. ambiguities PR libstdc++/85040 * include/bits/stl_function.h (greater::__not_overloaded) (less::__not_overloaded, greater_equal::__not_overloaded) (less_equal::__not_overloaded): Fix ambiguous specializations. * testsuite/20_util/function_objects/comparisons_pointer.cc: Add tests for type with overlaoded operators. Modified: trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/stl_function.h trunk/libstdc++-v3/testsuite/20_util/function_objects/comparisons_pointer.cc
Fixed.