TupleStorage< T > Class Template Reference

#include <tuple.h>

Inheritance diagram for TupleStorage< T >:

Public Member Functions

 TupleStorage ()=default
 
template<size_t... I, typename... ARGS>
 TupleStorage (std::index_sequence< I... > *, ARGS &&... args)
 
 MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR (TupleStorage, COPY_CONSTRUCTIBLE)
 
 MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT (TupleStorage, COPY_ASSIGNABLE)
 
 MAXON_DECLARE_CONDITIONAL_MOVE_CONSTRUCTOR (TupleStorage, MOVE_CONSTRUCTIBLE)
 
 MAXON_DECLARE_CONDITIONAL_MOVE_ASSIGNMENT (TupleStorage, MOVE_ASSIGNABLE)
 
- Public Member Functions inherited from TupleStorageBase< And< STD_IS_REPLACEMENT(default_constructible, T)... >::value, And< STD_IS_REPLACEMENT(trivially_destructible, T)... >::value, T... >
 TupleStorageBase ()=delete
 
 ~TupleStorageBase ()
 

Private Types

using Super = TupleStorageBase< And< STD_IS_REPLACEMENT(default_constructible, T)... >::value, And< STD_IS_REPLACEMENT(trivially_destructible, T)... >::value, T... >
 
using IndexSequence = std::index_sequence_for< T... >
 

Private Member Functions

template<size_t... I>
void CopyConstruct (std::index_sequence< I... > *, const TupleStorage &src)
 
template<size_t... I>
void CopyAssign (std::index_sequence< I... > *, const TupleStorage &src)
 
template<size_t... I>
void MoveConstruct (std::index_sequence< I... > *, TupleStorage &&src)
 
template<size_t... I>
void MoveAssign (std::index_sequence< I... > *, TupleStorage &&src)
 

Static Private Attributes

static const Bool COPY_CONSTRUCTIBLE
 
static const Bool COPY_ASSIGNABLE
 
static const Bool MOVE_CONSTRUCTIBLE
 
static const Bool MOVE_ASSIGNABLE
 

Additional Inherited Members

- Public Types inherited from TupleStorageBase< And< STD_IS_REPLACEMENT(default_constructible, T)... >::value, And< STD_IS_REPLACEMENT(trivially_destructible, T)... >::value, T... >
using Pack = ParameterPack< T... >
 
- Protected Member Functions inherited from TupleStorageBase< And< STD_IS_REPLACEMENT(default_constructible, T)... >::value, And< STD_IS_REPLACEMENT(trivially_destructible, T)... >::value, T... >
 TupleStorageBase (ENUM_DONT_INITIALIZE)
 

Member Typedef Documentation

◆ Super

using Super = TupleStorageBase<And<STD_IS_REPLACEMENT(default_constructible, T)...>::value, And<STD_IS_REPLACEMENT(trivially_destructible, T)...>::value, T...>
private

◆ IndexSequence

using IndexSequence = std::index_sequence_for<T...>
private

Constructor & Destructor Documentation

◆ TupleStorage() [1/2]

TupleStorage ( )
default

◆ TupleStorage() [2/2]

TupleStorage ( std::index_sequence< I... > *  ,
ARGS &&...  args 
)
explicit

Member Function Documentation

◆ MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR()

MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR ( TupleStorage< T >  ,
COPY_CONSTRUCTIBLE   
)

◆ MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT()

MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT ( TupleStorage< T >  ,
COPY_ASSIGNABLE   
)

◆ MAXON_DECLARE_CONDITIONAL_MOVE_CONSTRUCTOR()

MAXON_DECLARE_CONDITIONAL_MOVE_CONSTRUCTOR ( TupleStorage< T >  ,
MOVE_CONSTRUCTIBLE   
)

◆ MAXON_DECLARE_CONDITIONAL_MOVE_ASSIGNMENT()

MAXON_DECLARE_CONDITIONAL_MOVE_ASSIGNMENT ( TupleStorage< T >  ,
MOVE_ASSIGNABLE   
)

◆ CopyConstruct()

void CopyConstruct ( std::index_sequence< I... > *  ,
const TupleStorage< T > &  src 
)
private

◆ CopyAssign()

void CopyAssign ( std::index_sequence< I... > *  ,
const TupleStorage< T > &  src 
)
private

◆ MoveConstruct()

void MoveConstruct ( std::index_sequence< I... > *  ,
TupleStorage< T > &&  src 
)
private

◆ MoveAssign()

void MoveAssign ( std::index_sequence< I... > *  ,
TupleStorage< T > &&  src 
)
private

Member Data Documentation

◆ COPY_CONSTRUCTIBLE

const Bool COPY_CONSTRUCTIBLE
staticprivate

◆ COPY_ASSIGNABLE

const Bool COPY_ASSIGNABLE
staticprivate

◆ MOVE_CONSTRUCTIBLE

const Bool MOVE_CONSTRUCTIBLE
staticprivate

◆ MOVE_ASSIGNABLE

const Bool MOVE_ASSIGNABLE
staticprivate