[alg.three.way] (original) (raw)
25 Algorithms library [algorithms]
25.8 Sorting and related operations [alg.sorting]
25.8.11 Three-way comparison algorithms [alg.three.way]
template<class InputIterator1, class InputIterator2, class Cmp> constexpr auto lexicographical_compare_three_way(InputIterator1 b1, InputIterator1 e1, InputIterator2 b2, InputIterator2 e2, Cmp comp) -> decltype(comp(*b1, *b2));
Mandates: decltype(comp(*b1, *b2)) is a comparison category type.
Effects:Lexicographically compares two ranges and produces a result of the strongest applicable comparison category type.
Equivalent to:
for ( ; b1 != e1 && b2 != e2; void(++b1), void(++b2) ) if (auto cmp = comp(*b1,*b2); cmp != 0) return cmp; return b1 != e1 ? strong_ordering::greater : b2 != e2 ? strong_ordering::less : strong_ordering::equal;
template<class InputIterator1, class InputIterator2> constexpr auto lexicographical_compare_three_way(InputIterator1 b1, InputIterator1 e1, InputIterator2 b2, InputIterator2 e2);
Effects:Equivalent to:
return lexicographical_compare_three_way(b1, e1, b2, e2, compare_three_way());