Namespaces
Variants

std:: strict_weak_order

From cppreference.net
Определено в заголовочном файле <concepts>
template < class R, class T, class U >
concept strict_weak_order = std:: relation < R, T, U > ;
(начиная с C++20)

Концепт strict_weak_order<R, T, U> определяет, что relation R задает строгое слабое упорядочение на своих аргументах.

Содержание

Семантические требования

Отношение r является отношением строгого слабого порядка, если

  • оно иррефлексивно: для всех x , r ( x, x ) равно false ;
  • оно транзитивно: для всех a , b и c , если r ( a, b ) и r ( b, c ) оба равны true , тогда r ( a, c ) равно true ;
  • пусть e ( a, b ) определяется как ! r ( a, b ) && ! r ( b, a ) , тогда e транзитивно: e ( a, b ) && e ( b, c ) влечёт e ( a, c ) .

При этих условиях можно показать, что e является отношением эквивалентности, а r индуцирует строгое отношение полного порядка на классах эквивалентности, определяемых e .

Примечания

Различие между relation и strict_weak_order является чисто семантическим.

Ссылки

  • Стандарт C++23 (ISO/IEC 14882:2024):
  • 18.7.7 Концепт strict_weak_order [concept.strictweakorder]
  • Стандарт C++20 (ISO/IEC 14882:2020):
  • 18.7.7 Концепт strict_weak_order [concept.strictweakorder]

Смотрите также