libstdc++
std::_Tuple_impl< _Idx, _Head, _Tail...> Struct Template Reference
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 (const _Head &__head, const _Tail &...__tail)
 
template<typename _UHead , typename... _UTail, typename = typename enable_if<sizeof...(_Tail) == sizeof...(_UTail)>::type>
constexpr _Tuple_impl (_UHead &&__head, _UTail &&...__tail)
 
constexpr _Tuple_impl (const _Tuple_impl &)=default
 
template<typename... _UElements>
constexpr _Tuple_impl (const _Tuple_impl< _Idx, _UElements...> &__in)
 
template<typename _UHead , typename... _UTails>
constexpr _Tuple_impl (_Tuple_impl< _Idx, _UHead, _UTails...> &&__in)
 
template<typename _Alloc >
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a)
 
template<typename _Alloc >
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, const _Head &__head, const _Tail &...__tail)
 
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 _Tuple_impl &__in)
 
template<typename _Alloc >
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, _Tuple_impl &&__in)
 
template<typename _Alloc , typename... _UElements>
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, const _Tuple_impl< _Idx, _UElements...> &__in)
 
template<typename _Alloc , typename _UHead , typename... _UTails>
 _Tuple_impl (allocator_arg_t __tag, const _Alloc &__a, _Tuple_impl< _Idx, _UHead, _UTails...> &&__in)
 
constexpr noexcept (__and_< is_nothrow_move_constructible< _Head >, is_nothrow_move_constructible< _Inherited >>::value)
 
_Tuple_imploperator= (const _Tuple_impl &__in)
 
_Tuple_imploperator= (_Tuple_impl &&__in) noexcept(__and_< is_nothrow_move_assignable< _Head >, is_nothrow_move_assignable< _Inherited >>::value)
 
template<typename... _UElements>
_Tuple_imploperator= (const _Tuple_impl< _Idx, _UElements...> &__in)
 
template<typename _UHead , typename... _UTails>
_Tuple_imploperator= (_Tuple_impl< _Idx, _UHead, _UTails...> &&__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 noexcept (noexcept(swap(std::declval< _Head & >(), std::declval< _Head & >()))&&noexcept(_M_tail(__in)._M_swap(_M_tail(__in))))
 

Friends

template<std::size_t , typename... >
class _Tuple_impl
 

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 229 of file tuple.


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