std::experimental::ranges::StrictWeakOrder
From cppreference.com
< cpplrm; | experimentallrm; | ranges
Defined in header <experimental/ranges/concepts>
|
||
template < class R, class T, class U > concept bool StrictWeakOrder = 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
.
Notes
The distinction between Relation
and StrictWeakOrder
is purely semantic.