std::experimental::ranges::StrictWeakOrder
From cppreference.com
< cpp | experimental | ranges
C++
Experimental
| Technical Specification | ||||
| Filesystem library (filesystem TS) | ||||
| Library fundamentals (library fundamentals TS) | ||||
| Library fundamentals 2 (library fundamentals TS v2) | ||||
| Library fundamentals 3 (library fundamentals TS v3) | ||||
| Extensions for parallelism (parallelism TS) | ||||
| Extensions for parallelism 2 (parallelism TS v2) | ||||
| Extensions for concurrency (concurrency TS) | ||||
| Extensions for concurrency 2 (concurrency TS v2) | ||||
| Concepts (concepts TS) | ||||
| Ranges (ranges TS) | ||||
| Reflection (reflection TS) | ||||
| Mathematical special functions (special functions TR) | ||||
| Experimental Non-TS | ||||
| Pattern Matching | ||||
| Linear Algebra | ||||
| std::execution | ||||
| Contracts | ||||
| 2D Graphics |
Ranges
Concepts library
| Core language concepts | |||||||||||||
| Object concepts | |||||||||||||
| Comparison concepts | |||||||||||||
| Callable concepts | |||||||||||||
| |||||||||||||
| URNG concept | |||||||||||||
| 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,bandc, 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), theneis 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.