...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The TR1 Tuple provides the standard boolean relational operators.
Notation
Tuple element types
Parameter types
The type of the ith element of a tuple
The type of the ith parameter
template<typename T1, typename T2, ..., typename TN, typename U1, typename U2, ..., typename UN> bool operator==( const tuple<T1, T2, ..., TN>& lhs, const tuple<U1, U2, ..., UN>& rhs);
Requirements: For all i, 1 <= i < N, get<i>(lhs) == get<i>(rhs) is a valid expression returning a type that is convertible to bool.
Semantics: Returns true if and only if get<i>(lhs) == get<i>(rhs) for all i. For any 2 zero length tuples e and f, e == f returns true.
template<typename T1, typename T2, ..., typename TN, typename U1, typename U2, ..., typename UN> bool operator<( const tuple<T1, T2, ..., TN>& lhs, const tuple<U1, U2, ..., UN>& rhs);
Requirements: For all i, 1 <= i < N, get<i>(lhs) < get<i>(rhs) is a valid expression returning a type that is convertible to bool.
Semantics: Returns the lexicographical comparison of between lhs and rhs.
template<typename T1, typename T2, ..., typename TN, typename U1, typename U2, ..., typename UN> bool operator!=( const tuple<T1, T2, ..., TN>& lhs, const tuple<U1, U2, ..., UN>& rhs);
Requirements: For all i, 1 <= i < N, get<i>(lhs) == get<i>(rhs) is a valid expression returning a type that is convertible to bool.
Semantics: Returns !(lhs == rhs).
template<typename T1, typename T2, ..., typename TN, typename U1, typename U2, ..., typename UN> bool operator<=( const tuple<T1, T2, ..., TN>& lhs, const tuple<U1, U2, ..., UN>& rhs);
Requirements: For all i, 1 <= i < N, get<i>(rhs) < get<i>(lhs) is a valid expression returning a type that is convertible to bool.
Semantics: Returns !(rhs < lhs)
template<typename T1, typename T2, ..., typename TN, typename U1, typename U2, ..., typename UN> bool operator>( const tuple<T1, T2, ..., TN>& lhs, const tuple<U1, U2, ..., UN>& rhs);
Requirements: For all i, 1 <= i < N, get<i>(rhs) < get<i>(lhs) is a valid expression returning a type that is convertible to bool.
Semantics: Returns rhs < lhs.
template<typename T1, typename T2, ..., typename TN, typename U1, typename U2, ..., typename UN> bool operator>=( const tuple<T1, T2, ..., TN>& lhs, const tuple<U1, U2, ..., UN>& rhs);
Requirements: For all i, 1 <= i < N, get<i>(lhs) < get<i>(rhs) is a valid expression returning a type that is convertible to bool.
Semantics: Returns !(lhs < rhs).