cpp/utility/tuple/tuple

Constructs a new tuple.

In the descriptions that follow, let where indexing is zero-based.
 * be in the range in order,
 * be the th type in, and
 * be the th type in a template parameter pack named ,

@1@ Default constructor. Value-initializes all elements, if any. The default constructor is trivial if.
 * The constructor is if and only if  is not copy-list-initializable from  for at least one.
 * The constructor is if and only if  is not copy-list-initializable from  for at least one.

@2@ Direct constructor. Initializes each element of the tuple with the corresponding parameter.
 * This constructor is if and only if  is  for at least one.
 * This constructor is if and only if  is  for at least one.

@3@ Converting constructor. Initializes each element of the tuple with the corresponding value in.


 * The constructor is if and only if  is  for at least one.
 * The constructor is if and only if  is  for at least one.

@4-7@ Converting constructor. Initializes each element of the tuple with the corresponding element of.

Formally, let be, for all , initializes th element of the tuple with.
 * These constructors are if and only if  is  for at least one.
 * These constructors are if and only if  is  for at least one.

@8-11@ Pair constructor. Constructs a 2-element tuple with each element constructed from the corresponding element of.

Formally, let be, initializes the first element with  and the second element with.
 * The constructor is if and only if  or  is.
 * The constructor is if and only if  or  is.

@12@ constructor. Constructs a tuple with each element constructed from the corresponding element of.

Formally, for all, initializes th element of the tuple with.

@13@ Implicitly-defined copy constructor. Initializes each element of the tuple with the corresponding element of.
 * This constructor is if every operation it performs is . For the empty tuple, it is.
 * must be for all, otherwise.

@14@ Implicitly-defined move constructor. For all, initializes the th element of the tuple with.
 * This constructor is if every operation it performs is . For the empty tuple, it is.
 * must be for all, otherwise.

@15-28@ Identical to except each element is created by uses-allocator construction, that is, the Allocator object  is passed as an additional argument to the constructor of each element for which  is.