Namespaces
Variants

std::partial_ordering

С сайта ru.cppreference.net
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы проверки возможностей библиотеки (C++20)
Утилиты программ
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Операторы отношений (устарело в C++20)
 
Определён в заголовке <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 - неиспользуемый параметр любого типа, принимающий литеральный нулевой аргумент

Возвращаемое значение

1) true если v является equivalent , false если v является less , greater , или unordered
2) true если оба параметра содержат одинаковое значение, false в противном случае

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 - неиспользуемый параметр любого типа, принимающий аргумент литерального нуля

Возвращаемое значение

1) true если v является less , и false если v является greater , equivalent , или unordered
2) true если 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 - неиспользуемый параметр любого типа, принимающий литеральный нулевой аргумент

Возвращаемое значение

1) true если v является less или equivalent , и false если v является greater или unordered
2) true если 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 - неиспользуемый параметр любого типа, принимающий аргумент литерального нуля

Возвращаемое значение

1) true если v является greater , и false если v является less , equivalent , или unordered
2) true если 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 - неиспользуемый параметр любого типа, принимающий аргумент литерального нуля

Возвращаемое значение

1) true если v является greater или equivalent , и false если v является less или unordered
2) true если 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 - неиспользуемый параметр любого типа, принимающий аргумент литерального нуля

Возвращаемое значение

1) v .
2) greater если v равен less , less если v равен greater , иначе v .

Примечания

Встроенный operator<=> для значений с плавающей запятой использует следующий порядок: положительный ноль и отрицательный ноль сравниваются как equivalent , но могут быть различимы, а значения NaN сравниваются как unordered с любыми другими значениями.

Пример

Смотрите также

тип результата трёхстороннего сравнения, который поддерживает все 6 операторов и является заменяемым
(class)
тип результата трёхстороннего сравнения, который поддерживает все 6 операторов и не является заменяемым
(class)