std::strict_weak_order
Материал из cppreference.com
Определено в заголовочном файле <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
чисто семантическое.