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;
}