Annex D (informative) Compatibility [diff]

D.1 C++ and Ranges [diff.cpp]

D.1.3 Constrained Functional Objects [diff.cpp.functional]

The algorithm design described in this document assumes that the function objects std::equal_to and std::less get constraints added to their function call operators. (The former is constrained with EqualityComparable and the latter with StrictTotallyOrdered). Similar constraints are added to the other function objects in <functional>. As with the coarsely-grained algorithm constraints, these function object constraints are likely to cause user code to break.

Real-world experience is needed to assess the seriousness of the breakage. From a correctness point of view, the constraints are logical and valuable, but it's possible that for the sake of compatibility we provide both constrained and unconstrained functional objects.