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