#include <tuple>
#include <utility>
#include <iostream>
#include <typeinfo>
using std::tr1::make_tuple;
using std::tr1::ref;
using std::cout;
template <class T>
void show_type(T t)
{ // show the implementation-specific name of a type
cout << typeid(t).name() << "\n\n";
}
int main()
{ // demonstrate use of make_tuple
show_type(make_tuple(1, 2.1));
int a = 1, b = 2;
show_type(make_tuple(a, b));
show_type(make_tuple(ref(a), ref(b)));
return 0;
}