synth-three-way, synth-three-way-result - cppreference.com (original) (raw)

constexpr auto synth-three-way = /* see below */; (1) (since C++20) (exposition only*)
template< class T, class U = T > using synth-three-way-result = decltype(synth-three-way(std::declval<T&>(), std::declval<U&>())); (2) (since C++20) (exposition only*)
  1. A function object whose operator() behaves as the synthesized three-way comparison function. Equivalent to:

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; } };

  1. The return type of the operator() of (1) (_synth-three-way_).

[edit] Parameters

t, u - the values to be compared

[edit] Return value

The compare result.

[edit] See also

operator==operator!=operator<operator<=operator>operator>=operator<=>(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) lexicographically compares the values in the pair (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) lexicographically compares the values in the tuple (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(C++11)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++20) lexicographically compares the values of two arrays (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) lexicographically compares the values of two deques (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(C++11)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++11)(removed in C++20)(C++20) lexicographically compares the values of two forward_lists (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) lexicographically compares the values of two lists (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) lexicographically compares the values of two vectors (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) lexicographically compares the values of two maps (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) lexicographically compares the values of two multimaps (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) lexicographically compares the values of two sets (function template) [edit]
operator==operator!=operator<operator<=operator>operator>=operator<=>(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(removed in C++20)(C++20) lexicographically compares the values of two multisets (function template) [edit]