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 имеет три допустимых значения, реализованных как статические константные члены данных этого типа:
| Имя | Определение |
|---|---|
|
less
[static] | допустимое значение, обозначающее отношение «меньше» (упорядочено перед) (публичная статическая константа-член) |
|
equivalent
[static] | допустимое значение, обозначающее эквивалентность (не упорядочено ни перед, ни после) (публичная статическая константа-член) |
|
greater
[static] | допустимое значение, обозначающее отношение «больше» (упорядочено после) (публичная статическая константа-член) |
Преобразования
std::weak_ordering неявно преобразуется в std::partial_ordering, тогда как std::strong_ordering неявно преобразуется в weak_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 и т. д.
Эти функции не видны при обычном неквалифицированном поиске или квалифицированном поиске и могут быть найдены только с помощью поиска с учётом аргументов, если std::weak_ordering является ассоциированным классом аргументов.
Поведение программы, которая пытается сравнить weak_ordering с чем-либо, кроме целочисленного литерала 0, не определено.
сравнивает с нулём или 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 | - | неиспользуемый параметр любого типа, допускающего аргумент — целочисленный литерал 0 |
Возвращаемое значение
true, если v равно equivalent, false, если v равно less или greater
true, если оба параметра содержат одно и то же значение, в противном случае false 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 | - | неиспользуемый параметр любого типа, допускающего аргумент — целочисленный литерал 0 |
Возвращаемое значение
true, если v равно less, и false, если v равно greater или equivalent
true, если 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 | - | неиспользуемый параметр любого типа, допускающего аргумент — целочисленный литерал 0 |
Возвращаемое значение
true, если v равно less или equivalent, и false, если v равно greater
true, если 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 | - | неиспользуемый параметр любого типа, допускающего аргумент — целочисленный литерал 0 |
Возвращаемое значение
true, если v равно greater, и false, если v равно less или equivalent
true, если 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 | - | неиспользуемый параметр любого типа, допускающего аргумент — целочисленный литерал 0 |
Возвращаемое значение
true, если v равно greater или equivalent, и false, если v равно less
true, если 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 | - | неиспользуемый параметр любого типа, допускающего аргумент — целочисленный литерал 0 |
Возвращаемое значение
v.greater, если v равно less, less, если v равно greater, иначе v. Пример
См. также
|
(C++20) | тип результата трёхстороннего сравнения, поддерживающего все 6 операторов и обеспечивающего взаимозаменяемость (класс) |
|
(C++20) | тип результата трёхстороннего сравнения, поддерживающего все 6 операторов, не обеспечивающего взаимозаменяемость и допускающего несравнимые значения (класс) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/compare/weak_ordering