Listing 1
#include <tuple> #include <utility> using std::tr1::tuple; using std::pair; using std::make_pair; struct B { // base class }; struct D : B { // derived class }; int main() { // demonstrate construction of tuple objects // default constructors tuple<> t0; tuple<int> t1; // contained int element is not initialized tuple<int, D> t2; // contained D element gets default constructed // copy constructors tuple<> t3(t0); tuple<int> t4(t1); tuple<int, D> t5(t2); // construct from another tuple object tuple<double> t6(t4); // int element converted to double tuple<double, B> t7(t5); // D element converted to B // construct from std::pair object pair<int, D> p0 = make_pair(3, D()); tuple<double, B> t8(p0); // D element converted to B // construct from individual objects tuple<double> t9(1); // int argument converted to double tuple<double, B> t10(1, D()); // D argument converted to B return 0; }