...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
TR1 describes 2 utility functions for creating _tr1tuple_s. make_tuple builds a tuple out of it's argument list, and tie builds a tuple of references to it's arguments. The details of these creation functions are described in this section.
template<typename T1, typename T2, ..., typename TN> tuple<V1, V2, ..., VN> make_tuple(const T1& t1, const T2& t2, ..., const TN& tn);
Where Vi is X& if the cv-unqualified type Ti is reference_wrapper<X>, otherwise Vi is Ti.
Returns: tuple<V1, V2, ..., VN>(t1, t2, ..., tN)
template<typename T1, typename T2, ..., typename TN> tuple<T1&, T2&, ..., TN&> tie(T1& t1, T2& t2, ..., TN& tn);
Returns: tuple<T1&, T2&, ..., TN&>(t1, t2, ..., tN). When argument ti is ignore, assigning any value to the corresponding tuple element has has no effect.