libstdc++
std::_Tuple_impl< _Idx, _Head, _Tail... > Struct Template Reference

#include <tuple>

Inheritance diagram for std::_Tuple_impl< _Idx, _Head, _Tail... >:
[legend]

Public Types

typedef _Head_base< _Idx, _Head, __empty_not_final< _Head >::value > _Base
 
typedef _Tuple_impl< _Idx+1, _Tail... > _Inherited
 

Public Member Functions

constexpr _Tuple_impl (_Tuple_impl &&__in) noexcept(__and_< is_nothrow_move_constructible< _Head >, is_nothrow_move_constructible< _Inherited > >::value)
 
template<typename _UHead , typename... _UTails>
constexpr _Tuple_impl (_Tuple_impl< _Idx, _UHead, _UTails... > &&__in)
 
template<typename _UHead , typename... _UTail, typename = typename enable_if<sizeof...(_Tail) == sizeof...(_UTail)>::type>
constexpr _Tuple_impl (_UHead &&__head, _UTail &&... __tail)
 
template<typename _Alloc >
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a)
 
template<typename _Alloc >
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, _Tuple_impl &&__in)
 
template<typename _Alloc , typename _UHead , typename... _UTails>
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, _Tuple_impl< _Idx, _UHead, _UTails... > &&__in)
 
template<typename _Alloc , typename _UHead , typename... _UTail, typename = typename enable_if<sizeof...(_Tail) == sizeof...(_UTail)>::type>
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, _UHead &&__head, _UTail &&... __tail)
 
template<typename _Alloc >
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, const _Head &__head, const _Tail &... __tail)
 
template<typename _Alloc >
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, const _Tuple_impl &__in)
 
template<typename _Alloc , typename... _UElements>
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, const _Tuple_impl< _Idx, _UElements... > &__in)
 
constexpr _Tuple_impl (const _Head &__head, const _Tail &... __tail)
 
constexpr _Tuple_impl (const _Tuple_impl &)=default
 
template<typename... _UElements>
constexpr _Tuple_impl (const _Tuple_impl< _Idx, _UElements... > &__in)
 
_Tuple_imploperator= (_Tuple_impl &&__in) noexcept(__and_< is_nothrow_move_assignable< _Head >, is_nothrow_move_assignable< _Inherited > >::value)
 
template<typename _UHead , typename... _UTails>
_Tuple_imploperator= (_Tuple_impl< _Idx, _UHead, _UTails... > &&__in)
 
_Tuple_imploperator= (const _Tuple_impl &__in)
 
template<typename... _UElements>
_Tuple_imploperator= (const _Tuple_impl< _Idx, _UElements... > &__in)
 

Static Public Member Functions

static constexpr _Head & _M_head (_Tuple_impl &__t) noexcept
 
static constexpr const _Head & _M_head (const _Tuple_impl &__t) noexcept
 
static constexpr _Inherited_M_tail (_Tuple_impl &__t) noexcept
 
static constexpr const _Inherited_M_tail (const _Tuple_impl &__t) noexcept
 

Protected Member Functions

void _M_swap (_Tuple_impl &__in) noexcept(__is_nothrow_swappable< _Head >::value &&noexcept(_M_tail(__in)._M_swap(_M_tail(__in))))
 

Detailed Description

template<std::size_t _Idx, typename _Head, typename... _Tail>
struct std::_Tuple_impl< _Idx, _Head, _Tail... >

Recursive tuple implementation. Here we store the Head element and derive from a Tuple_impl containing the remaining elements (which contains the Tail).

Definition at line 180 of file tuple.

Member Typedef Documentation

◆ _Base

template<std::size_t _Idx, typename _Head , typename... _Tail>
typedef _Head_base<_Idx, _Head, __empty_not_final<_Head>::value> std::_Tuple_impl< _Idx, _Head, _Tail... >::_Base

Definition at line 187 of file tuple.

◆ _Inherited

template<std::size_t _Idx, typename _Head , typename... _Tail>
typedef _Tuple_impl<_Idx + 1, _Tail...> std::_Tuple_impl< _Idx, _Head, _Tail... >::_Inherited

Definition at line 186 of file tuple.

Constructor & Destructor Documentation

◆ _Tuple_impl() [1/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
constexpr std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( )
inlineconstexpr

Definition at line 201 of file tuple.

◆ _Tuple_impl() [2/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
constexpr std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( const _Head &  __head,
const _Tail &...  __tail 
)
inlineexplicitconstexpr

Definition at line 205 of file tuple.

◆ _Tuple_impl() [3/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _UHead , typename... _UTail, typename = typename enable_if<sizeof...(_Tail) == sizeof...(_UTail)>::type>
constexpr std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( _UHead &&  __head,
_UTail &&...  __tail 
)
inlineexplicitconstexpr

Definition at line 211 of file tuple.

◆ _Tuple_impl() [4/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
constexpr std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( _Tuple_impl< _Idx, _Head, _Tail... > &&  __in)
inlineconstexprnoexcept

Definition at line 218 of file tuple.

◆ _Tuple_impl() [5/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename... _UElements>
constexpr std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( const _Tuple_impl< _Idx, _UElements... > &  __in)
inlineconstexpr

Definition at line 225 of file tuple.

◆ _Tuple_impl() [6/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _UHead , typename... _UTails>
constexpr std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( _Tuple_impl< _Idx, _UHead, _UTails... > &&  __in)
inlineconstexpr

Definition at line 230 of file tuple.

◆ _Tuple_impl() [7/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _Alloc >
std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( allocator_arg_t  __tag,
const _Alloc &  __a 
)
inline

Definition at line 237 of file tuple.

◆ _Tuple_impl() [8/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _Alloc >
std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( allocator_arg_t  __tag,
const _Alloc &  __a,
const _Head &  __head,
const _Tail &...  __tail 
)
inline

Definition at line 242 of file tuple.

◆ _Tuple_impl() [9/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _Alloc , typename _UHead , typename... _UTail, typename = typename enable_if<sizeof...(_Tail) == sizeof...(_UTail)>::type>
std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( allocator_arg_t  __tag,
const _Alloc &  __a,
_UHead &&  __head,
_UTail &&...  __tail 
)
inline

Definition at line 250 of file tuple.

◆ _Tuple_impl() [10/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _Alloc >
std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( allocator_arg_t  __tag,
const _Alloc &  __a,
const _Tuple_impl< _Idx, _Head, _Tail... > &  __in 
)
inline

Definition at line 257 of file tuple.

◆ _Tuple_impl() [11/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _Alloc >
std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( allocator_arg_t  __tag,
const _Alloc &  __a,
_Tuple_impl< _Idx, _Head, _Tail... > &&  __in 
)
inline

Definition at line 263 of file tuple.

◆ _Tuple_impl() [12/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _Alloc , typename... _UElements>
std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( allocator_arg_t  __tag,
const _Alloc &  __a,
const _Tuple_impl< _Idx, _UElements... > &  __in 
)
inline

Definition at line 270 of file tuple.

◆ _Tuple_impl() [13/13]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _Alloc , typename _UHead , typename... _UTails>
std::_Tuple_impl< _Idx, _Head, _Tail... >::_Tuple_impl ( allocator_arg_t  __tag,
const _Alloc &  __a,
_Tuple_impl< _Idx, _UHead, _UTails... > &&  __in 
)
inline

Definition at line 278 of file tuple.

Member Function Documentation

◆ _M_head() [1/2]

template<std::size_t _Idx, typename _Head , typename... _Tail>
static constexpr _Head & std::_Tuple_impl< _Idx, _Head, _Tail... >::_M_head ( _Tuple_impl< _Idx, _Head, _Tail... > &  __t)
inlinestaticconstexprnoexcept

Definition at line 190 of file tuple.

◆ _M_head() [2/2]

template<std::size_t _Idx, typename _Head , typename... _Tail>
static constexpr const _Head & std::_Tuple_impl< _Idx, _Head, _Tail... >::_M_head ( const _Tuple_impl< _Idx, _Head, _Tail... > &  __t)
inlinestaticconstexprnoexcept

Definition at line 193 of file tuple.

◆ _M_swap()

template<std::size_t _Idx, typename _Head , typename... _Tail>
void std::_Tuple_impl< _Idx, _Head, _Tail... >::_M_swap ( _Tuple_impl< _Idx, _Head, _Tail... > &  __in)
inlineprotectednoexcept

Definition at line 326 of file tuple.

◆ _M_tail() [1/2]

template<std::size_t _Idx, typename _Head , typename... _Tail>
static constexpr _Inherited & std::_Tuple_impl< _Idx, _Head, _Tail... >::_M_tail ( _Tuple_impl< _Idx, _Head, _Tail... > &  __t)
inlinestaticconstexprnoexcept

Definition at line 196 of file tuple.

◆ _M_tail() [2/2]

template<std::size_t _Idx, typename _Head , typename... _Tail>
static constexpr const _Inherited & std::_Tuple_impl< _Idx, _Head, _Tail... >::_M_tail ( const _Tuple_impl< _Idx, _Head, _Tail... > &  __t)
inlinestaticconstexprnoexcept

Definition at line 199 of file tuple.

◆ operator=() [1/4]

template<std::size_t _Idx, typename _Head , typename... _Tail>
_Tuple_impl & std::_Tuple_impl< _Idx, _Head, _Tail... >::operator= ( _Tuple_impl< _Idx, _Head, _Tail... > &&  __in)
inlinenoexcept

Definition at line 295 of file tuple.

◆ operator=() [2/4]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename _UHead , typename... _UTails>
_Tuple_impl & std::_Tuple_impl< _Idx, _Head, _Tail... >::operator= ( _Tuple_impl< _Idx, _UHead, _UTails... > &&  __in)
inline

Definition at line 315 of file tuple.

◆ operator=() [3/4]

template<std::size_t _Idx, typename _Head , typename... _Tail>
_Tuple_impl & std::_Tuple_impl< _Idx, _Head, _Tail... >::operator= ( const _Tuple_impl< _Idx, _Head, _Tail... > &  __in)
inline

Definition at line 287 of file tuple.

◆ operator=() [4/4]

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<typename... _UElements>
_Tuple_impl & std::_Tuple_impl< _Idx, _Head, _Tail... >::operator= ( const _Tuple_impl< _Idx, _UElements... > &  __in)
inline

Definition at line 306 of file tuple.

Friends And Related Symbol Documentation

◆ _Tuple_impl

template<std::size_t _Idx, typename _Head , typename... _Tail>
template<std::size_t , typename... >
friend class _Tuple_impl
friend

Definition at line 184 of file tuple.


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