tuple::tuple
tuple();
explicit tuple(const Types&...);
tuple(const tuple& right);
template <class... Types2>
tuple(const tuple<Types2...>& right);
template <class U1, class U2>
tuple(const pair<U1, U2>& right);
tuple(tuple&& right)
template <class... Types2>
tuple(tuple<Types2...>&& right);
template <class U1, class U2>
tuple(pair<U1, U2>&& right);
The first constructor constructs an object whose elements are default constructed. The second constructor constructs an object whose elements are copy constructed from the argument list. The third and fourth constructors construct an object whose elements are copy constructed from the corresponding element of right. The fifth constructor constructs an object whose element at index 0 is copy constructed from right.first and whose element at index 1 is copy constructed from right.second.