Listing 5
#include <tuple> #include <iomanip> #include <iostream> using std::tr1::tuple; using std::tr1::make_tuple; using std::tr1::get; using std::cout; using std::boolalpha; struct S { // simple struct that holds a value S(int i0) : i(i0) {} int i; }; bool operator==(const S& left, const S& right) { // compare two objects of type S for equality cout << " comparing " << left.i << " to " << right.i << ", result is " << (left.i == right.i) << '\n'; return left.i == right.i; } int main() { // demonstrate operator== and operator!= for tuple types cout << boolalpha; tuple<S, S, S> t0 = make_tuple(1, 2, 3); tuple<S, S, S> t1 = t0; cout << "t0 == t1:\n"; bool res = t0 == t1; cout << " result is " << res << '\n'; cout << "t0 != t1:\n"; res = t0 != t1; cout << " result is " << res << '\n'; get<1>(t0) = 1; get<2>(t0) = 4; cout << "After changing t0, "; cout << "t0 == t1:\n"; res = t0 == t1; cout << " result is " << res << '\n'; cout << "t0 != t1:\n"; res = t0 != t1; cout << " result is " << res << '\n'; return 0; }