std::strict_weak_order

From cppreference.com
< cpp‎ | concepts
Defined in header <concepts>
template < class R, class T, class U >
concept strict_weak_order = std::relation<R, T, U>;
(since C++20)

The concept strict_weak_order<R, T, U> specifies that the relation R imposes a strict weak ordering on its arguments.

Semantic requirements

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 and c, if r(a, b) and r(b, c) are both true then r(a, c) is true;
  • let e(a, b) be !r(a, b) && !r(b, a), then e is transitive: e(a, b) && e(b, c) implies e(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 strict_weak_order is purely semantic.

This site archives manuals. You are looking at an archived manual.
If you're looking for this specific version of this manual, you're in the right place. Otherwise, please check the version.