This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++11 status.
tuple::operator<()
Section: 22.4.9 [tuple.rel] Status: C++11 Submitter: Joe Gottman Opened: 2010-05-15 Last modified: 2016-01-28
Priority: Not Prioritized
View other active issues in [tuple.rel].
View all other issues in [tuple.rel].
View all issues with C++11 status.
Discussion:
The requirements section for std::tuple
says the following:
Requires: For all
i
, where0 <= i and i < sizeof...(Types)
,get<i>(t) < get<i>(u)
is a valid expression returning a type that is convertible tobool
.sizeof...(TTypes) == sizeof...(UTypes)
.
This is necessary but not sufficient, as the algorithm for comparing
tuple
s also computes get<i>(u) < get<i>(t)
(note the order)
[ Post-Rapperswil ]
Moved to Tentatively Ready with updated wording correcting change-bars after 6 positive votes on c++std-lib.
[ Adopted at 2010-11 Batavia ]
Proposed resolution:
template<class... TTypes, class... UTypes> bool operator<(const tuple<TTypes...>& t, const tuple<UTypes...>& u);Requires: For all
i
, where0 <= i
andi < sizeof...(Types)
,get<i>(t) < get<i>(u)
andget<i>(u) < get<i>(t)
is a valid expression returning a type that isare valid expressions returning types that are convertible tobool
.sizeof...(TTypes) == sizeof...(UTypes)
.