...one of the most highly
regarded and expertly designed C++ library projects in the
world.

— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards

The TR1 Tuple type provides a default constructor, a constructor that takes initializers for all of its elements, a copy constructor, and a converting copy constructor. The details of the various constructors are described in this section.

**Notation**

`T1 ... TN`,`U1 ... UN`Tuple element types

`P1 ... PN`Parameter types

`Ti`,`Ui`The type of the

`i`th element of a tuple`Pi`The type of the

`i`th parameter

tuple();

**Requirements**: Each `Ti`
is default constructable.

**Semantics**: Default initializes each element
of the tuple.

tuple(P1,P2,...,PN);

**Requirements**: Each `Pi`
is `Ti` if `Ti` is a reference type, `const Ti&` otherwise.

**Semantics**: Copy initializes each element
with the corresponding parameter.

tuple(const tuple& t);

**Requirements**: Each `Ti`
should be copy constructable.

**Semantics**: Copy constructs each element
of `*this`
with the corresponding element of `t`.

template<typename U1, typename U2, ..., typename UN> tuple(const tuple<U1, U2, ..., UN>& t);

**Requirements**: Each `Ti`
shall be constructible from the corresponding `Ui`.

**Semantics**: Constructs each element of
`*this`
with the corresponding element of `t`.