Listing 7
#include <tuple> #include <typeinfo> #include <iostream> using std::tr1::tuple; using std::tr1::tuple_size; using std::tr1::tuple_element; using std::cout; typedef tuple<> tuple0; typedef tuple<int> tuple1; typedef tuple<int, double> tuple2; int main() { // show sizes and element types for several tuple types cout << "tuple0 has " << tuple_size<tuple0>::value << " elements\n"; cout << "tuple1 has " << tuple_size<tuple1>::value << " elements\n"; cout << " its first element has type " << typeid(tuple_element<0, tuple1>::type).name() << "\n"; cout << "tuple2 has " << tuple_size<tuple2>::value << " elements\n"; cout << " its first element has type " << typeid(tuple_element<0, tuple2>::type).name() << "\n"; cout << " its second element has type " << typeid(tuple_element<1, tuple2>::type).name() << "\n"; return 0; }