Spec-Zone.ru › C++

std::partial_order

Определён в заголовочном файле <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. Подробности см. в разделе Объект точки настройки.

Пример

См. также

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

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/utility/compare/partial_order

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API