[ Web Proxy ]
URL:
Viewing: https://ru.cppreference.com/cpp/concepts/totally_ordered [Back]  [Original]

std::totally_ordered, std::totally_ordered_with cppreference.com
cppreference.com

std::totally_ordered, std::totally_ordered_with

cppreference.com
<tbody> </tbody>
template<class T> concept totally_ordered = std::equality_comparable<T> && __PartiallyOrderedWith<T, T>;
(1) ( C++20)
template<class T, class U> concept totally_ordered_with = std::totally_ordered<T> && std::totally_ordered<U> && std::equality_comparable_with<T, U> && std::totally_ordered< std::common_reference_t< const std::remove_reference_t<T>&, const std::remove_reference_t<U>&>> && __PartiallyOrderedWith<T, U>;
(2) ( C++20)
template<class T, class U> concept __PartiallyOrderedWith = requires(const std::remove_reference_t<T>& t, const std::remove_reference_t<U>& u) { { t < u } -> boolean-testable; { t > u } -> boolean-testable; { t <= u } -> boolean-testable; { t >= u } -> boolean-testable; { u < t } -> boolean-testable; { u > t } -> boolean-testable; { u <= t } -> boolean-testable; { u >= t } -> boolean-testable; };
(3) ( *)
1) std::totally_ordered , ==,!=,<,>,<=,>= , .
2) std::totally_ordered_with , ==,!=,<,>,<=,>= (, ) T U , . , , .
3) __PartiallyOrderedWith , T U ( ), <, >, <= >=, .

, , , , .

1) std::totally_ordered<T> , lvalue a, b c const std::remove_reference_t<T>:
  • bool(a < b), bool(a > b) bool(a == b) true;
  • bool(a < b) bool(b < c) true, bool(a < c) true;
  • bool(a > b) == bool(b < a)
  • bool(a >= b) == !bool(a < b)
  • bool(a <= b) == !bool(b < a)
2) std::totally_ordered_with<T, U> ,
  • t t2, lvalue const std::remove_reference_t<T> std::remove_reference_t<T>
  • u u2, lvalue const std::remove_reference_t<U> std::remove_reference_t<U> ,

C std::common_reference_t<const std::remove_reference_t<T>&, const std::remove_reference_t<U>&>, , E C, CONVERT_TO<C>(E) :

  • static_cast<C>(std::as_const(E)).
( C++23)
  • static_cast<const C&>(std::as_const(E)), ,
  • static_cast<const C&>(std::move(E)) .
( C++23)

:

  • bool(t < u) == bool(CONVERT_TO<C>(t2) < CONVERT_TO<C>(u2))
  • bool(t > u) == bool(CONVERT_TO<C>(t2) > CONVERT_TO<C>(u2))
  • bool(t <= u) == bool(CONVERT_TO<C>(t2) <= CONVERT_TO<C>(u2))
  • bool(t >= u) == bool(CONVERT_TO<C>(t2) >= CONVERT_TO<C>(u2))
  • bool(u < t) == bool(CONVERT_TO<C>(u2) < CONVERT_TO<C>(t2))
  • bool(u > t) == bool(CONVERT_TO<C>(u2) > CONVERT_TO<C>(t2))
  • bool(u <= t) == bool(CONVERT_TO<C>(u2) <= CONVERT_TO<C>(t2))
  • bool(u >= t) == bool(CONVERT_TO<C>(u2) >= CONVERT_TO<C>(t2))
3) __PartiallyOrderedWith<T, U> ,
  • lvalue t const std::remove_reference_t<T>,
  • lvalue u const std::remove_reference_t<U>,

:

  • t < u, t <= u, t > u, t >= u, u < t, u <= t, u > t u >= t ;
  • bool(t < u) == bool(u > t);
  • bool(u < t) == bool(t > u);
  • bool(t <= u) == bool(u >= t);
  • bool(u <= t) == bool(t >= u).

, requires , ( ).

requires, , lvalue, , lvalue (, ) rvalue , . , . , , .

, <=>
() []

Web Proxy Viewer  |  New URL  |  Original Page