libstdc++
std::tuple< _Elements > Class Template Reference
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< 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< 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)
 
tupleoperator= (const tuple &__in)
 
template<typename... _UElements>
enable_if< sizeof...(_UElements)==sizeof...(_Elements), tuple & >::type operator= (const tuple< _UElements... > &__in)
 
tupleoperator= (tuple &&__in) noexcept(is_nothrow_move_assignable< _Inherited >::value)
 
template<typename... _UElements>
enable_if< sizeof...(_UElements)==sizeof...(_Elements), tuple & >::type operator= (tuple< _UElements... > &&__in)
 
void swap (tuple &__in) noexcept(noexcept(__in._M_swap(__in)))
 

Detailed Description

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

Primary class template, tuple.

Definition at line 556 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 596 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 624 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 632 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 666 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 ( )
inlineconstexpr

Definition at line 581 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 ( )
inlineexplicitconstexpr

Definition at line 591 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)
inlineconstexpr

Definition at line 608 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)
inlineexplicitconstexpr

Definition at line 619 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)
inlineconstexpr

Definition at line 646 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)
inlineexplicitconstexpr

Definition at line 657 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)
inlineconstexpr

Definition at line 678 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)
inlineexplicitconstexpr

Definition at line 690 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)
inlineconstexpr

Definition at line 702 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)
inlineexplicitconstexpr

Definition at line 713 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 719 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 729 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 
)
inlineexplicit

Definition at line 740 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 750 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 
)
inlineexplicit

Definition at line 761 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 767 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 771 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< tuple< _UElements... > && >(), bool >::type = true>
std::tuple< _Elements >::tuple ( allocator_arg_t  __tag,
const _Alloc &  __a,
const tuple< _UElements... > &  __in 
)
inline

Definition at line 783 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< tuple< _UElements... > && >(), bool >::type = false>
std::tuple< _Elements >::tuple ( allocator_arg_t  __tag,
const _Alloc &  __a,
const tuple< _UElements... > &  __in 
)
inlineexplicit

Definition at line 798 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 813 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 
)
inlineexplicit

Definition at line 828 of file tuple.

Member Function Documentation

◆ operator=() [1/4]

template<typename... _Elements>
tuple & std::tuple< _Elements >::operator= ( const tuple< _Elements > &  __in)
inline

Definition at line 835 of file tuple.

◆ operator=() [2/4]

template<typename... _Elements>
template<typename... _UElements>
enable_if< sizeof...(_UElements)==sizeof...(_Elements), tuple & >::type std::tuple< _Elements >::operator= ( const tuple< _UElements... > &  __in)
inline

Definition at line 853 of file tuple.

◆ operator=() [3/4]

template<typename... _Elements>
tuple & std::tuple< _Elements >::operator= ( tuple< _Elements > &&  __in)
inlinenoexcept

Definition at line 842 of file tuple.

◆ operator=() [4/4]

template<typename... _Elements>
template<typename... _UElements>
enable_if< sizeof...(_UElements)==sizeof...(_Elements), tuple & >::type std::tuple< _Elements >::operator= ( tuple< _UElements... > &&  __in)
inline

Definition at line 863 of file tuple.

◆ swap()

template<typename... _Elements>
void std::tuple< _Elements >::swap ( tuple< _Elements > &  __in)
inlinenoexcept

Definition at line 870 of file tuple.


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