is normal), the C++11 version of tuples will not expose this value to the user. Using variadic templates, the declaration of the tuple class looks as follows: template <class ...Types> class tuple; An example of definition and use of the tuple type: typedef std::tuple <int, double, long &, const char *> test_tuple; long lengthy = 12; test_tuple proof (18, 6.5, lengthy, "Ciao!"); lengthy = std::get<0>(proof); // Assign to 'lengthy' the value 18. std::get<3>(proof) = " Beautiful!"; // Modify the tuple’s fourth element. It's possible to create the tuple proof without defining its contents, but only if the tuple elements' types possess default constructors. Moreover, it's possible to assign a tuple to another tuple: if the two tuples’ types are the same, each element type must possess a copy constructor; otherwise, each element type of the right-side tuple must be convertible to that of the corresponding element type of the left-side tuple or that the corresponding element type of the left-side tuple has a suitable constructor. typedef std::tuple <int , double, string > tuple_1 t1; typedef std::tuple <char, short , const char * > tuple_2 t2 ('X', 2, "Hola!"); t1 = t2; // Ok, first two elements can be converted, // the third one can be constructed from a 'const char *'. Just like std::make_pair for std::pair, there exists std::make_tuple to automatically create std::tuples using type deduction and auto helps to declare such a tuple. std::tie creates tuples of lvalue references to help unpack tuples. std::ignore also helps here. See the example: auto record = std::make_tuple("Hari Ram", "New Delhi", 3.5, 'A'); std::string name ; float gpa ; char grade ; std::tie(name, std::ignore, gpa, grade) = record ; // std::ignore helps drop the place name std::cout << name << ' ' << gpa << ' ' << grade << std::endl ; Relational operators are available (among tuples with the same number of elements), and two expressions are available to check a tuple's characteristics (only during compilation): std::tuple_size<T>::value returns the number of elements in the tuple T, std::tuple_element<I, T>::type returns the type of the object number I of the tuple T. Hash tables Including hash tables (unordered associative containers) in the C++ standard library is one of the most recurring requests. It was not adopted in C++03 due to time constraints only. Although hash tables are less efficient than a balanced tree in the worst case (in the presence of many collisions), they