It is somewhat confusing at first read but if you look a the Type requirements
section it says:
Compare must meet the requirements of Compare.
which points to C++ concepts: Compare which says (emphasis mine):
The return value of the function call operation applied to an object of type Compare, when contextually converted to bool, yields true if the first argument of the call appears before the second in the strict weak ordering relation induced by this Compare type, and false otherwise.
and goes on to establish the requirements for comp(a, b)
which is that it establishes strict weak ordering relation with the following properties:
- For all a, comp(a,a)==false
- If comp(a,b)==true then comp(b,a)==false
- if comp(a,b)==true and comp(b,c)==true then comp(a,c)==true