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