Именованные требования C++: LessThanComparable
Тип должен работать с оператором <, а результат должен иметь стандартную семантику.
Требования
Тип T удовлетворяет требованиям LessThanComparable, если для заданных выражений a, b и c типа T или constT(начиная с C++11) следующее выражение допустимо и имеет указанные эффекты:
| Выражение | Тип | Эффекты |
|---|---|---|
a < b | удовлетворяет требованиям BooleanTestable (до C++20) | Устанавливает отношение строгого слабого порядка со следующими свойствами:
|
моделирует boolean-testable(начиная с C++20) |
Примечания
Чтобы удовлетворять этому требованию, типы, у которых нет встроенных операторов сравнения, должны предоставлять пользовательский operator<.
Для типов, которые одновременно удовлетворяют требованиям EqualityComparable и LessThanComparable, стандартная библиотека C++ различает
-
Равенство — значение выражения
a == b, и -
Эквивалентность — значение выражения
!(a < b) && !(b < a).
Отчеты об ошибках
Следующие отчеты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применен к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
|
LWG 2114 (P2167R3) | C++98 | преобразование к bool было недостаточным для отражения ожиданий реализаций | требования усилены |
См. также
| бинарный предикат, устанавливающий отношение порядка (именованное требование) |
|
|
(C++20) | задает, что relation задает строгий слабый порядок (концепт) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/named_req/LessThanComparable