std::tuple< _Elements > Class Template Reference
Utilities

`#include <tuple>`

Inheritance diagram for std::tuple< _Elements >:
[legend]

## Public Types

template<typename _Dummy >
using | _TCC = _TC< is_same< _Dummy, void >::value, _Elements... >
template<typename... _UElements>
using | _TMC = _TC<(sizeof...(_Elements)==sizeof...(_UElements)) &&(_TC<(sizeof...(_UElements)==1), _Elements... >::template _NotSameTuple< _UElements... >()), _Elements... >
template<typename... _UElements>
using | _TMCT = _TC<(sizeof...(_Elements)==sizeof...(_UElements)) &&!is_same< tuple< _Elements... >, tuple< _UElements... > >::value, _Elements... >
template<typename _Dummy >
using | _TNTC = _TC< is_same< _Dummy, void >::value &&sizeof...(_Elements)==1, _Elements... >

## Public Member Functions

template<typename... _UElements, typename enable_if< _TMC< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&_TMC< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&(sizeof...(_Elements) >=1), bool >::type = true>
constexpr | tuple (_UElements &&... __elements)
template<typename... _UElements, typename enable_if< _TMC< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&!_TMC< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&(sizeof...(_Elements) >=1), bool >::type = false>
constexpr | tuple (_UElements &&... __elements)
template<typename _Alloc >
| tuple (allocator_arg_t __tag, const _Alloc &__a)
template<typename _Alloc , typename... _UElements, typename enable_if< _TMC< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&_TMC< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >(), bool >::type = true>
| tuple (allocator_arg_t __tag, const _Alloc &__a, _UElements &&... __elements)
template<typename _Alloc , typename... _UElements, typename enable_if< _TMC< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&!_TMC< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >(), bool >::type = false>
| tuple (allocator_arg_t __tag, const _Alloc &__a, _UElements &&... __elements)
template<typename _Alloc , typename _Dummy = void, typename enable_if< _TCC< _Dummy >::template _ConstructibleTuple< _Elements... >() &&_TCC< _Dummy >::template _ImplicitlyConvertibleTuple< _Elements... >(), bool >::type = true>
| tuple (allocator_arg_t __tag, const _Alloc &__a, const _Elements &... __elements)
template<typename _Alloc , typename _Dummy = void, typename enable_if< _TCC< _Dummy >::template _ConstructibleTuple< _Elements... >() &&!_TCC< _Dummy >::template _ImplicitlyConvertibleTuple< _Elements... >(), bool >::type = false>
| tuple (allocator_arg_t __tag, const _Alloc &__a, const _Elements &... __elements)
template<typename _Alloc >
| tuple (allocator_arg_t __tag, const _Alloc &__a, const tuple &__in)
template<typename _Alloc , typename _Dummy = void, typename... _UElements, typename enable_if< _TMCT< _UElements... >::template _ConstructibleTuple< _UElements... >() &&_TMCT< _UElements... >::template _ImplicitlyConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< const tuple< _UElements... > & >(), bool >::type = true>
| tuple (allocator_arg_t __tag, const _Alloc &__a, const tuple< _UElements... > &__in)
template<typename _Alloc , typename _Dummy = void, typename... _UElements, typename enable_if< _TMCT< _UElements... >::template _ConstructibleTuple< _UElements... >() &&!_TMCT< _UElements... >::template _ImplicitlyConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< const tuple< _UElements... > & >(), bool >::type = false>
| tuple (allocator_arg_t __tag, const _Alloc &__a, const tuple< _UElements... > &__in)
template<typename _Alloc >
| tuple (allocator_arg_t __tag, const _Alloc &__a, tuple &&__in)
template<typename _Alloc , typename _Dummy = void, typename... _UElements, typename enable_if< _TMCT< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&_TMCT< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< tuple< _UElements... > && >(), bool >::type = true>
| tuple (allocator_arg_t __tag, const _Alloc &__a, tuple< _UElements... > &&__in)
template<typename _Alloc , typename _Dummy = void, typename... _UElements, typename enable_if< _TMCT< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&!_TMCT< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< tuple< _UElements... > && >(), bool >::type = false>
| tuple (allocator_arg_t __tag, const _Alloc &__a, tuple< _UElements... > &&__in)
template<typename _Dummy = void, typename enable_if< _TCC< _Dummy >::template _ConstructibleTuple< _Elements... >() &&_TCC< _Dummy >::template _ImplicitlyConvertibleTuple< _Elements... >() &&(sizeof...(_Elements) >=1), bool >::type = true>
constexpr | tuple (const _Elements &... __elements)
template<typename _Dummy = void, typename enable_if< _TCC< _Dummy >::template _ConstructibleTuple< _Elements... >() &&!_TCC< _Dummy >::template _ImplicitlyConvertibleTuple< _Elements... >() &&(sizeof...(_Elements) >=1), bool >::type = false>
constexpr | tuple (const _Elements &... __elements)
constexpr | tuple (const tuple &)=default
template<typename... _UElements, typename _Dummy = void, typename enable_if< _TMCT< _UElements... >::template _ConstructibleTuple< _UElements... >() &&_TMCT< _UElements... >::template _ImplicitlyConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< const tuple< _UElements... > & >(), bool >::type = true>
constexpr | tuple (const tuple< _UElements... > &__in)
template<typename... _UElements, typename _Dummy = void, typename enable_if< _TMCT< _UElements... >::template _ConstructibleTuple< _UElements... >() &&!_TMCT< _UElements... >::template _ImplicitlyConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< const tuple< _UElements... > & >(), bool >::type = false>
constexpr | tuple (const tuple< _UElements... > &__in)
constexpr | tuple (tuple &&)=default
template<typename... _UElements, typename _Dummy = void, typename enable_if< _TMCT< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&_TMCT< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< tuple< _UElements... > && >(), bool >::type = true>
constexpr | tuple (tuple< _UElements... > &&__in)
template<typename... _UElements, typename _Dummy = void, typename enable_if< _TMCT< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&!_TMCT< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< tuple< _UElements... > && >(), bool >::type = false>
constexpr | tuple (tuple< _UElements... > &&__in)
template<typename... _UElements>
__enable_if_t< __assignable< const _UElements &... >(), tuple & > | operator= (const tuple< _UElements... > &__in) noexcept(__nothrow_assignable< const _UElements &... >())
template<typename... _UElements>
__enable_if_t< __assignable< _UElements... >(), tuple & > | operator= (tuple< _UElements... > &&__in) noexcept(__nothrow_assignable< _UElements... >())
tuple & | operator= (typename conditional< __assignable< _Elements... >(), tuple &&, __nonesuch_no_braces && >::type __in) noexcept(__nothrow_assignable< _Elements... >())
tuple & | operator= (typename conditional< __assignable< const _Elements &... >(), const tuple &, const __nonesuch_no_braces & >::type __in) noexcept(__nothrow_assignable< const _Elements &... >())
void | swap (tuple &__in) noexcept(__and_< __is_nothrow_swappable< _Elements >... >::value)

## Detailed Description

template<typename... _Elements>
class std::tuple< _Elements >

Primary class template, tuple.

Definition at line 523 of file tuple.

## Member Typedef Documentation

## _TCC

template<typename... _Elements>
template<typename _Dummy >

using std::tuple< _Elements >::_TCC = _TC<is_same<_Dummy, void>::value, _Elements...>

Definition at line 576 of file tuple.

## _TMC

template<typename... _Elements>
template<typename... _UElements>

using std::tuple< _Elements >::_TMC = _TC<(sizeof...(_Elements) == sizeof...(_UElements)) && (_TC<(sizeof...(_UElements)==1), _Elements...>:: template _NotSameTuple<_UElements...>()), _Elements...>

Definition at line 604 of file tuple.

## _TMCT

template<typename... _Elements>
template<typename... _UElements>

using std::tuple< _Elements >::_TMCT = _TC<(sizeof...(_Elements) == sizeof...(_UElements)) && !is_same<tuple<_Elements...>, tuple<_UElements...> >::value, _Elements...>

Definition at line 612 of file tuple.

## _TNTC

template<typename... _Elements>
template<typename _Dummy >

using std::tuple< _Elements >::_TNTC = _TC<is_same<_Dummy, void>::value && sizeof...(_Elements) == 1, _Elements...>

Definition at line 646 of file tuple.

## Constructor & Destructor Documentation

## tuple() [1/21]

template<typename... _Elements>
template<typename _Dummy = void, typename enable_if< _TC2< _Dummy >::_ImplicitlyDefaultConstructibleTuple(), bool >::type = true>

constexpr std::tuple< _Elements >::tuple | ( |  | ) |

inline constexpr

Definition at line 561 of file tuple.

## tuple() [2/21]

template<typename... _Elements>
template<typename _Dummy = void, typename enable_if< _TC2< _Dummy >::_DefaultConstructibleTuple() &&!_TC2< _Dummy >::_ImplicitlyDefaultConstructibleTuple(), bool >::type = false>

constexpr std::tuple< _Elements >::tuple | ( |  | ) |

inline explicit constexpr

Definition at line 571 of file tuple.

## tuple() [3/21]

template<typename... _Elements>
template<typename _Dummy = void, typename enable_if< _TCC< _Dummy >::template _ConstructibleTuple< _Elements... >() &&_TCC< _Dummy >::template _ImplicitlyConvertibleTuple< _Elements... >() &&(sizeof...(_Elements) >=1), bool >::type = true>

constexpr std::tuple< _Elements >::tuple | ( | const _Elements &... | __elements | ) |

inline constexpr

Definition at line 588 of file tuple.

## tuple() [4/21]

template<typename... _Elements>
template<typename _Dummy = void, typename enable_if< _TCC< _Dummy >::template _ConstructibleTuple< _Elements... >() &&!_TCC< _Dummy >::template _ImplicitlyConvertibleTuple< _Elements... >() &&(sizeof...(_Elements) >=1), bool >::type = false>

constexpr std::tuple< _Elements >::tuple | ( | const _Elements &... | __elements | ) |

inline explicit constexpr

Definition at line 599 of file tuple.

## tuple() [5/21]

template<typename... _Elements>
template<typename... _UElements, typename enable_if< _TMC< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&_TMC< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&(sizeof...(_Elements) >=1), bool >::type = true>

constexpr std::tuple< _Elements >::tuple | ( | _UElements &&... | __elements | ) |

inline constexpr

Definition at line 626 of file tuple.

## tuple() [6/21]

template<typename... _Elements>
template<typename... _UElements, typename enable_if< _TMC< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&!_TMC< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&(sizeof...(_Elements) >=1), bool >::type = false>

constexpr std::tuple< _Elements >::tuple | ( | _UElements &&... | __elements | ) |

inline explicit constexpr

Definition at line 637 of file tuple.

## tuple() [7/21]

template<typename... _Elements>
template<typename... _UElements, typename _Dummy = void, typename enable_if< _TMCT< _UElements... >::template _ConstructibleTuple< _UElements... >() &&_TMCT< _UElements... >::template _ImplicitlyConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< const tuple< _UElements... > & >(), bool >::type = true>

constexpr std::tuple< _Elements >::tuple | ( | const tuple< _UElements... > & | __in | ) |

inline constexpr

Definition at line 658 of file tuple.

## tuple() [8/21]

template<typename... _Elements>
template<typename... _UElements, typename _Dummy = void, typename enable_if< _TMCT< _UElements... >::template _ConstructibleTuple< _UElements... >() &&!_TMCT< _UElements... >::template _ImplicitlyConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< const tuple< _UElements... > & >(), bool >::type = false>

constexpr std::tuple< _Elements >::tuple | ( | const tuple< _UElements... > & | __in | ) |

inline explicit constexpr

Definition at line 670 of file tuple.

## tuple() [9/21]

template<typename... _Elements>
template<typename... _UElements, typename _Dummy = void, typename enable_if< _TMCT< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&_TMCT< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< tuple< _UElements... > && >(), bool >::type = true>

constexpr std::tuple< _Elements >::tuple | ( | tuple< _UElements... > && | __in | ) |

inline constexpr

Definition at line 682 of file tuple.

## tuple() [10/21]

template<typename... _Elements>
template<typename... _UElements, typename _Dummy = void, typename enable_if< _TMCT< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&!_TMCT< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< tuple< _UElements... > && >(), bool >::type = false>

constexpr std::tuple< _Elements >::tuple | ( | tuple< _UElements... > && | __in | ) |

inline explicit constexpr

Definition at line 693 of file tuple.

## tuple() [11/21]

template<typename... _Elements>
template<typename _Alloc >

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a
| ) |  |

inline

Definition at line 699 of file tuple.

## tuple() [12/21]

template<typename... _Elements>
template<typename _Alloc , typename _Dummy = void, typename enable_if< _TCC< _Dummy >::template _ConstructibleTuple< _Elements... >() &&_TCC< _Dummy >::template _ImplicitlyConvertibleTuple< _Elements... >(), bool >::type = true>

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | const _Elements &... | __elements
| ) |  |

inline

Definition at line 709 of file tuple.

## tuple() [13/21]

template<typename... _Elements>
template<typename _Alloc , typename _Dummy = void, typename enable_if< _TCC< _Dummy >::template _ConstructibleTuple< _Elements... >() &&!_TCC< _Dummy >::template _ImplicitlyConvertibleTuple< _Elements... >(), bool >::type = false>

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | const _Elements &... | __elements
| ) |  |

inline explicit

Definition at line 720 of file tuple.

## tuple() [14/21]

template<typename... _Elements>
template<typename _Alloc , typename... _UElements, typename enable_if< _TMC< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&_TMC< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >(), bool >::type = true>

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | _UElements &&... | __elements
| ) |  |

inline

Definition at line 730 of file tuple.

## tuple() [15/21]

template<typename... _Elements>
template<typename _Alloc , typename... _UElements, typename enable_if< _TMC< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&!_TMC< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >(), bool >::type = false>

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | _UElements &&... | __elements
| ) |  |

inline explicit

Definition at line 741 of file tuple.

## tuple() [16/21]

template<typename... _Elements>
template<typename _Alloc >

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | const tuple< _Elements > & | __in
| ) |  |

inline

Definition at line 747 of file tuple.

## tuple() [17/21]

template<typename... _Elements>
template<typename _Alloc >

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | tuple< _Elements > && | __in
| ) |  |

inline

Definition at line 751 of file tuple.

## tuple() [18/21]

template<typename... _Elements>
template<typename _Alloc , typename _Dummy = void, typename... _UElements, typename enable_if< _TMCT< _UElements... >::template _ConstructibleTuple< _UElements... >() &&_TMCT< _UElements... >::template _ImplicitlyConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< const tuple< _UElements... > & >(), bool >::type = true>

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | const tuple< _UElements... > & | __in
| ) |  |

inline

Definition at line 763 of file tuple.

## tuple() [19/21]

template<typename... _Elements>
template<typename _Alloc , typename _Dummy = void, typename... _UElements, typename enable_if< _TMCT< _UElements... >::template _ConstructibleTuple< _UElements... >() &&!_TMCT< _UElements... >::template _ImplicitlyConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< const tuple< _UElements... > & >(), bool >::type = false>

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | const tuple< _UElements... > & | __in
| ) |  |

inline explicit

Definition at line 778 of file tuple.

## tuple() [20/21]

template<typename... _Elements>
template<typename _Alloc , typename _Dummy = void, typename... _UElements, typename enable_if< _TMCT< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&_TMCT< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< tuple< _UElements... > && >(), bool >::type = true>

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | tuple< _UElements... > && | __in
| ) |  |

inline

Definition at line 793 of file tuple.

## tuple() [21/21]

template<typename... _Elements>
template<typename _Alloc , typename _Dummy = void, typename... _UElements, typename enable_if< _TMCT< _UElements... >::template _MoveConstructibleTuple< _UElements... >() &&!_TMCT< _UElements... >::template _ImplicitlyMoveConvertibleTuple< _UElements... >() &&_TNTC< _Dummy >::template _NonNestedTuple< tuple< _UElements... > && >(), bool >::type = false>

std::tuple< _Elements >::tuple | ( | allocator_arg_t | __tag,
|  | const _Alloc & | __a,
|  | tuple< _UElements... > && | __in
| ) |  |

inline explicit

Definition at line 808 of file tuple.

## Member Function Documentation

## operator=() [1/4]

template<typename... _Elements>
template<typename... _UElements>

__enable_if_t< __assignable< const _UElements &... >(), tuple & > std::tuple< _Elements >::operator= | ( | const tuple< _UElements... > & | __in | ) |

inline noexcept

Definition at line 838 of file tuple.

## operator=() [2/4]

template<typename... _Elements>
template<typename... _UElements>

__enable_if_t< __assignable< _UElements... >(), tuple & > std::tuple< _Elements >::operator= | ( | tuple< _UElements... > && | __in | ) |

inline noexcept

Definition at line 847 of file tuple.

## operator=() [3/4]

template<typename... _Elements>

tuple & std::tuple< _Elements >::operator= | ( | typename conditional< __assignable< _Elements... >(), tuple< _Elements > &&, __nonesuch_no_braces && >::type | __in | ) |

inline noexcept

Definition at line 827 of file tuple.

## operator=() [4/4]

template<typename... _Elements>

tuple & std::tuple< _Elements >::operator= | ( | typename conditional< __assignable< const _Elements &... >(), const tuple< _Elements > &, const __nonesuch_no_braces & >::type | __in | ) |

inline noexcept

Definition at line 817 of file tuple.

## swap()

template<typename... _Elements>

void std::tuple< _Elements >::swap | ( | tuple< _Elements > & | __in | ) |

inline noexcept

Definition at line 856 of file tuple.

The documentation for this class was generated from the following file:

- tuple