std:: partial_ordering
|
Определено в заголовке
<compare>
|
||
|
class
partial_ordering
;
|
(начиная с C++20) | |
Тип класса
std::partial_ordering
является типом результата
трёхстороннего сравнения
, которое:
-
Поддерживает все шесть операторов сравнения (
==,!=,<,<=,>,>=).
- Не подразумевает заменяемость: если a эквивалентно b , f ( a ) может не быть эквивалентным f ( b ) , где f обозначает функцию, которая читает только значимое для сравнения состояние, доступное через публичные константные члены аргумента. Другими словами, эквивалентные значения могут быть различимы.
- Допускает несравнимые значения : a < b , a == b , и a > b могут быть false .
Содержание |
Константы
Тип
std::partial_ordering
имеет четыре допустимых значения, реализованных как константные статические члены данных его типа:
| Название | Определение |
|
inline
constexpr
std
::
partial_ordering
less
[static]
|
допустимое значение, указывающее отношение "меньше чем" (упорядочено до)
(публичная статическая константа-член) |
|
inline
constexpr
std
::
partial_ordering
equivalent
[static]
|
допустимое значение, указывающее эквивалентность (ни упорядочено до, ни упорядочено после)
(публичная статическая константа-член) |
|
inline
constexpr
std
::
partial_ordering
greater
[static]
|
допустимое значение, указывающее отношение "больше чем" (упорядочено после)
(публичная статическая константа-член) |
|
inline
constexpr
std
::
partial_ordering
unordered
[static]
|
допустимое значение, указывающее отношение с несравнимым значением
(публичная статическая константа-член) |
Преобразования
std::partial_ordering
не может быть неявно преобразован в другие типы категорий сравнения, в то время как и
std::strong_ordering
, и
std::weak_ordering
могут быть неявно преобразованы в
partial_ordering
.
Сравнения
Операторы сравнения определены между значениями этого типа и литералом 0 . Это поддерживает выражения a <=> b == 0 или a <=> b < 0 , которые могут использоваться для преобразования результата трёхстороннего оператора сравнения в булево отношение; см. std::is_eq , std::is_lt и др.
Эти функции не видны при обычном
unqualified
или
qualified lookup
и могут быть найдены только с помощью
argument-dependent lookup
, когда
std::partial_ordering
является ассоциированным классом аргументов.
Поведение программы, которая пытается сравнить
partial_ordering
с чем-либо, кроме целочисленного литерала
0
, является неопределённым.
|
operator==
operator<
operator>
operator<=
operator>=
operator<=>
|
сравнивает с нулём или
partial_ordering
(функция) |
operator==
|
friend
constexpr
bool
operator
==
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
bool
operator == ( partial_ordering v, partial_ordering w ) noexcept = default ; |
(2) | |
Параметры
| v, w | - |
std::partial_ordering
значения для проверки
|
| u | - | неиспользуемый параметр любого типа, принимающий литеральный нулевой аргумент |
Возвращаемое значение
v
является
equivalent
,
false
если
v
является
less
,
greater
, или
unordered
operator<
|
friend
constexpr
bool
operator
<
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
bool
operator
<
(
/*unspecified*/
u, partial_ordering v
)
noexcept
;
|
(2) | |
Параметры
| v | - |
значение
std::partial_ordering
для проверки
|
| u | - | неиспользуемый параметр любого типа, принимающий аргумент литерального нуля |
Возвращаемое значение
v
является
less
, и
false
если
v
является
greater
,
equivalent
, или
unordered
v
является
greater
, и
false
если
v
является
less
,
equivalent
, или
unordered
operator<=
|
friend
constexpr
bool
operator
<=
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
bool
operator
<=
(
/*unspecified*/
u, partial_ordering v
)
noexcept
;
|
(2) | |
Параметры
| v | - |
значение
std::partial_ordering
для проверки
|
| u | - | неиспользуемый параметр любого типа, принимающий литеральный нулевой аргумент |
Возвращаемое значение
v
является
less
или
equivalent
, и
false
если
v
является
greater
или
unordered
v
является
greater
или
equivalent
, и
false
если
v
является
less
или
unordered
operator>
|
friend
constexpr
bool
operator
>
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
bool
operator
>
(
/*unspecified*/
u, partial_ordering v
)
noexcept
;
|
(2) | |
Параметры
| v | - |
значение
std::partial_ordering
для проверки
|
| u | - | неиспользуемый параметр любого типа, принимающий аргумент литерального нуля |
Возвращаемое значение
v
является
greater
, и
false
если
v
является
less
,
equivalent
, или
unordered
v
является
less
, и
false
если
v
является
greater
,
equivalent
, или
unordered
operator>=
|
friend
constexpr
bool
operator
>=
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
bool
operator
>=
(
/*unspecified*/
u, partial_ordering v
)
noexcept
;
|
(2) | |
Параметры
| v | - |
значение
std::partial_ordering
для проверки
|
| u | - | неиспользуемый параметр любого типа, принимающий аргумент литерального нуля |
Возвращаемое значение
v
является
greater
или
equivalent
, и
false
если
v
является
less
или
unordered
v
является
less
или
equivalent
, и
false
если
v
является
greater
или
unordered
operator<=>
|
friend
constexpr
partial_ordering operator
<=>
(
partial_ordering v,
/*unspecified*/
u
)
noexcept
;
|
(1) | |
|
friend
constexpr
partial_ordering operator
<=>
(
/*unspecified*/
u, partial_ordering v
)
noexcept
;
|
(2) | |
Параметры
| v | - |
значение
std::partial_ordering
для проверки
|
| u | - | неиспользуемый параметр любого типа, принимающий аргумент литерального нуля |
Возвращаемое значение
greater
если
v
равен
less
,
less
если
v
равен
greater
, иначе
v
.
Примечания
Встроенный
operator<=>
для значений с плавающей запятой использует следующий порядок: положительный ноль и отрицательный ноль сравниваются как
equivalent
, но могут быть различимы, а значения NaN сравниваются как
unordered
с любыми другими значениями.
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |
Смотрите также
|
(C++20)
|
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов и является заменяемым
(class) |
|
(C++20)
|
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов и не является заменяемым
(class) |