|
Boost Users : |
Subject: [Boost-users] [Tuple] Problem with operator== and tuples
From: Dominique Devienne (ddevienne_at_[hidden])
Date: 2009-03-25 20:36:08
I'm trying to compare two tuple instances of the same type (indirectly
by doing an == on std::set's of them), but this doesn't compile for
me. The Tuple doc seems to indicate comparisons are supported. What am
I missing? Thanks, --DD
struct RowidTupleComparator {
bool operator()(
const boost::tuple<sqlite3_int64>& lhs,
const boost::tuple<sqlite3_int64>& rhs
) const {
return boost::get<0>(lhs) < boost::get<0>(rhs);
}
};
void TypeIdTests::test_rtti_vtable_text_vs_int() {
typedef boost::tuple<sqlite3_int64> ROW;
std::set<ROW, RowidTupleComparator> by_type_id;
get_rows(
"select rowid from rtti where type_id = :1",
make_tuple(MyFoo::id().value()), by_type_id
);
std::set<ROW, RowidTupleComparator> by_type;
get_rows(
"select rowid from rtti where type = :1",
make_tuple(MyFoo::id().name().string()), by_type
);
CPPUNIT_ASSERT_EQUAL(by_type_id.size(), by_type.size());
CPPUNIT_ASSERT(by_type_id == by_type); // <<< doesn't compile
}
c:\program files\microsoft visual studio 8\vc\include\utility(60) :
see declaration of 'std::operator =='
c:\program files\microsoft visual studio 8\vc\include\xutility(2621) :
error C2676: binary '==' :
'const boost::tuples::tuple<sqlite3_int64>' does not define this operator or
a conversion to a type acceptable to the predefined operator // edited
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net