std::experimental::ranges::StrictWeakOrder
From cppreference.com
< cpp  experimental  ranges
Defined in header <experimental/ranges/concepts>


template < class R, class T, class U > concept bool StrictWeakOrder = ranges::Relation<R, T, U>; 
(1)  (ranges TS) 
The concept StrictWeakOrder<R, T, U>
specifies that the Relation
R
imposes a strict weak ordering on its arguments. A relation r
is a strict weak ordering if
 it is irreflexive: for all
x
,r(x, x)
is false;  it is transitive: for all
a
,b
andc
, ifr(a, b)
andr(b, c)
are both true thenr(a, c)
is true;  let
e(a, b)
be!r(a, b) && !r(b, a)
, thene
is transitive:e(a, b) && e(b, c)
impliese(a, c)
.
Under these conditions, it can be shown that e
is an equivalence relation, and r
induces a strict total ordering on the equivalence classes determined by e
.
[edit] Notes
The distinction between Relation
and StrictWeakOrder
is purely semantic.