Пространства имён
Варианты
Действия

std::partial_ordering

Материал из cppreference.com
< cpp‎ | utility
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм (C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
partial_ordering
(C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования (C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
Определено в заголовочном файле <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 имеет четыре допустимых значения, реализованных как константные статические элементы данных своего типа:

Элемент константа Определение
less(inline constexpr)
[static]
допустимое значение типа std::partial_ordering, указывающее на отношение меньше чем (упорядоченное раньше)
(public static константа-элемент)
equivalent(inline constexpr)
[static]
допустимое значение типа std::partial_ordering, указывающее на эквивалентность (ни упорядоченное до, ни упорядоченное после)
(public static константа-элемент)
greater(inline constexpr)
[static]
допустимое значение типа std::partial_ordering, указывающее отношение больше чем (упорядоченное после)
(public static константа-элемент)
unordered(inline constexpr)
[static]
допустимое значение типа std::partial_ordering, указывающее отношение с несравнимым значением
(public 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 и т.д.

Эти функции не видны обычному неквалифицированному или квалифицированному поиску и могут быть найдены только с помощью зависящего от аргумента поиска, когда std::partial_ordering является ассоциированным классом аргументом.

Поведение программы, пытающейся сравнить partial_ordering с чем-либо, кроме целочисленного литерала 0, не определено.

operator==operator<operator>operator<=operator>=operator<=>
сравнивается с нулём или partial_ordering
(функция)

operator==

friend constexpr bool operator==( partial_ordering v, /*не указано*/ 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, /*не указано*/ u ) noexcept;
(1)
friend constexpr bool operator<( /*не указано*/ 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, /*не указано*/ u ) noexcept;
(1)
friend constexpr bool operator<=( /*не указано*/ 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, /*не указано*/ u ) noexcept;
(1)
friend constexpr bool operator>( /*не указано*/ 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, /*не указано*/ u ) noexcept;
(1)
friend constexpr bool operator>=( /*не указано*/ 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, /*не указано*/ u ) noexcept;
(1)
friend constexpr partial_ordering operator<=>( /*не указано*/ u, partial_ordering v ) noexcept;
(2)

Параметры

v std::partial_ordering значение для проверки
u неиспользуемый параметр любого типа, который принимает литеральный нулевой аргумент

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

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

[править] Примечание

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

[править] Пример

[править] Смотрите также

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