std:: strict_weak_order
|
Определено в заголовочном файле
<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]
-
18.7.7 Концепт
- Стандарт C++20 (ISO/IEC 14882:2020):
-
-
18.7.7 Концепт
strict_weak_order[concept.strictweakorder]
-
18.7.7 Концепт