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. Подробности см. в разделе Объект точки настройки.
Пример
См. также
|
(C++20) | тип результата трёхстороннего сравнения, поддерживающий все 6 операторов, не допускающий подстановку и позволяющий несравнимые значения (класс) |
|
(C++20) | выполняет трёхстороннее сравнение и возвращает результат типа std::strong_ordering(объект точки настройки) |
|
(C++20) | выполняет трёхстороннее сравнение и возвращает результат типа std::weak_ordering(объект точки настройки) |
|
(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