Namespaces
Variants

std::partial_order

От 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)
Функции сравнения целых чисел
(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)



 
Определён в заголовке <compare>
inline namespace /* unspecified */ {
    inline constexpr /* unspecified */ partial_order = /* unspecified */;
}
(начиная с C++20)
Сигнатура вызова
template< class T, class U >
    requires /* see below */
constexpr std::partial_ordering
    partial_order( T&& t, U&& u ) noexcept(/* see below */);

Сравнивает два значения с помощью трёхстороннего сравнения и возвращает результат типа std::partial_ordering.

Пусть t и u — выражения, а T и U обозначают decltype((t)) и decltype((u)) соответственно. std::partial_order(t, u) является эквивалентным выражению:

  • Если std::is_same_v<std::decay_t<T>, std::decay_t<U>> является true:
    • std::partial_ordering(partial_order(t, u)), если это корректное выражение, в котором разрешение перегрузки выполняется в контексте, не содержащем объявления std::partial_order,
    • иначе, std::partial_ordering(std::compare_three_way()(t, u)), если оно корректно,
    • иначе, std::partial_ordering(std::weak_order(t, u)), если оно корректно.
  • Во всех остальных случаях выражение некорректно, что может привести к ошибке подстановки при его появлении в непосредственном контексте инстанцирования шаблона.

Объекты точек кастомизации

Имя std::partial_order обозначает объект точки кастомизации , который является константным функциональным объектом литерального типа semiregular класса. Для подробностей см. CustomizationPointObject .

Пример

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

тип результата трёхстороннего сравнения, который поддерживает все 6 операторов, не является заменяемым и допускает несравнимые значения
(класс)
выполняет трёхстороннее сравнение и производит результат типа std::strong_ordering
(объект точки настройки)
(C++20)
выполняет трёхстороннее сравнение и производит результат типа std::weak_ordering
(объект точки настройки)
выполняет трёхстороннее сравнение и производит результат типа std::partial_ordering , даже если operator <=> недоступен
(объект точки настройки)