Spec-Zone.ru › C++

synth-three-way, synth-three-way-result

constexpr auto synth-three-way = /* see below */;
(1) (начиная с C++20)
(только для иллюстрации*)
template< class T, class U = T >
using synth-three-way-result =
    decltype(synth-three-way(std::declval<T&>(), std::declval<U&>()));
(2) (начиная с C++20)
(только для иллюстрации*)
1) Функциональный объект, чей operator() действует как синтезированная функция трёхстороннего сравнения. Эквивалентен:
constexpr auto synth-three-way =
    []<class T, class U>(const T& t, const U& u)
        requires requires
        {
            { t < u } -> boolean-testable;
            { u < t } -> boolean-testable;
        }
    {
        if constexpr (std::three_way_comparable_with<T, U>)
            return t <=> u;
        else
        {
            if (t < u)
                return std::weak_ordering::less;
            if (u < t)
                return std::weak_ordering::greater;
            return std::weak_ordering::equivalent;
        }
    };
2) Тип возвращаемого значения operator() из (1) (synth-three-way).

Параметры

t, u - сравниваемые значения

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

Результат сравнения.

См. также

operator==operator!=operator<operator<=operator>operator>=operator<=>
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20)
лексикографически сравнивает значения в pair
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20)
лексикографически сравнивает значения в кортеже
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(C++11)(C++11)(удалён в C++20)(C++11)(удалён в C++20)(C++11)(удалён в C++20)(C++11)(удалён в C++20)(C++11)(удалён в C++20)(C++20)
лексикографически сравнивает значения двух array
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20)
лексикографически сравнивает значения двух deque
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(C++11)(C++11)(удалён в C++20)(C++11)(удалён в C++20)(C++11)(удалён в C++20)(C++11)(удалён в C++20)(C++11)(удалён в C++20)(C++20)
лексикографически сравнивает значения двух forward_list
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20)
лексикографически сравнивает значения двух list
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20)
лексикографически сравнивает значения двух vector
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20)
лексикографически сравнивает значения двух map
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20)
лексикографически сравнивает значения двух multimap
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20)
лексикографически сравнивает значения двух set
(шаблон функции)
operator==operator!=operator<operator<=operator>operator>=operator<=>
(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(удалён в C++20)(C++20)
лексикографически сравнивает значения двух multiset
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/standard_library/synth-three-way

Spec-Zone.ru

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