tuple.h File Reference

Classes

class  ForEach
 
class  TupleStorageLayout< INDEX, PRE_OFFSET, PRE_MAX_ALIGN, SZ_ALIGN >
 
class  TupleStorageLayout< INDEX, PRE_OFFSET, PRE_MAX_ALIGN >
 
class  TupleStorageLayout< INDEX, PRE_OFFSET, PRE_MAX_ALIGN, SZ_ALIGN, REST... >
 
class  TupleStorageBase< DEFAULT_CONSTRUCTIBLE, TRIVIALLY_DESTRUCTIBLE, T >
 
class  TupleStorageBase< false, true, T... >
 
class  TupleStorageBase< true, false, T... >
 
class  TupleStorageBase< true, true, T... >
 
struct  TupleRefWrapper< T >
 
struct  TupleRefWrapper< T & >
 
class  TupleStorage< T >
 
class  TupleStorage< T1 >
 
class  TupleStorage< T1, T2 >
 
class  TupleStorage< T1, T2, T3 >
 
class  TupleStorage< T1, T2, T3, T4 >
 
class  TupleStorage< T1, T2, T3, T4, T5 >
 
class  TupleStorage< T1, UnitType >
 
class  TupleStorage< T1, const UnitType & >
 
class  Tuple< T >
 
struct  FindUniqueTupleIndex< SEARCHTYPE, TUPLETYPE >
 
struct  FindUniqueTupleIndex< SEARCHTYPE, Tuple< TYPES... > >
 
class  Tuple< T >
 
class  Tuple<>
 
struct  PairSelector< T1, T2, DECAYED_T2 >
 
struct  PairSelector< T1, T2, UnitType >
 
struct  HomogenousTupleTypeHelper< N, T, TYPES >
 
struct  HomogenousTupleTypeHelper< 0, T, TYPES ... >
 
struct  TupleRecHelper< I, N >
 
struct  TupleRecHelper< I, 1 >
 
struct  TupleRecHelper< I, 0 >
 
class  IgnoredPlaceholder
 
struct  TupleElementEquals
 
struct  TupleElementEquals::ByIndex< INDEX >
 
struct  TupleElementEquals::ByType< ELEMENTTYPE >
 
struct  TupleElementLessThan
 
struct  TupleElementLessThan::ByIndex< INDEX >
 
struct  TupleElementLessThan::ByType< ELEMENTTYPE >
 
struct  TupleElementCompare
 
struct  TupleElementCompare::ByIndex< INDEX >
 
struct  TupleElementCompare::ByType< ELEMENTTYPE >
 

Namespaces

 maxon
 
 maxon::details
 

Typedefs

template<typename T1 , typename T2 >
using Pair = typename maxon::details::PairSelector< T1, T2 >::type
 
template<Int N, typename T >
using HomogenousTupleType = typename maxon::details::HomogenousTupleTypeHelper< N, T >::type
 

Functions

template<typename T >
constexpr UInt64 GetSizeAndAlignment ()
 
template<typename X >
Bool TupleDestructMember (Generic &x, SFINAEHelper< X > *)
 
template<typename X >
Bool TupleDestructMember (Generic &x, SFINAEHelper< X & > *)
 
template<typename TUPLE , size_t... I>
void TupleDestruct (TUPLE &tuple, std::index_sequence< I... > *)
 
ResultOk< void > TupleCopyFrom ()
 
template<typename T1 , typename... T>
Result< void > TupleCopyFrom (const T1 &a1, const T &... rest)
 
const StringTupleToString (const FormatStatement *fs)
 
template<typename T1 , typename... T>
SFINAEHelper< String, T1 >::type TupleToString (const FormatStatement *fs, const T1 &a1, const T &... rest)
 
Bool TupleEquals ()
 
template<typename T1 , typename... T>
Bool TupleEquals (const T1 &a1, const T &... rest)
 
Bool TupleLessThan ()
 
template<typename T1 , typename... T>
Bool TupleLessThan (const T1 &a1, const T &... rest)
 
template<typename T1 , typename T2 >
TupleStorage< T1 &, typename std::conditional< std::is_same< T2, UnitType >::value, UnitType, const T2 & >::type > TuplePair (T1 &t1, const T2 &t2)
 
template<Int I, typename ... TYPES>
auto TupleGet (const Tuple< TYPES ... > &tup) -> const typename ParameterPack< TYPES... >::template At< I >::type &
 
template<Int I, typename ... TYPES>
auto TupleGet (Tuple< TYPES ... > &tup) -> typename ParameterPack< TYPES... >::template At< I >::type &
 
template<Int I, typename ... TYPES>
auto TupleGet (Tuple< TYPES ... > &&tup) -> typename ParameterPack< TYPES... >::template At< I >::type &&
 
template<typename TUP , typename F , size_t ... INDICES>
auto ExpandSeqHelperConst (const TUP &tup, F &&func, std::index_sequence< INDICES ... >) -> decltype(func(TupleGet< INDICES >(tup) ...))
 
template<typename TUP , typename F , size_t ... INDICES>
auto ExpandSeqHelper (TUP &&tup, F &&func, std::index_sequence< INDICES ... >) -> decltype(func(TupleGet< INDICES >(std::forward< TUP >(tup)) ...))
 
template<typename F , typename ... TYPES>
auto TupleExpand (const Tuple< TYPES ... > &tup, F &&func) -> decltype(maxon::details::ExpandSeqHelperConst(tup, std::forward< F >(func), std::make_index_sequence< sizeof...(TYPES)>()))
 
template<typename F , typename ... TYPES>
auto TupleExpand (Tuple< TYPES ... > &tup, F &&func) -> decltype(maxon::details::ExpandSeqHelper(tup, std::forward< F >(func), std::make_index_sequence< sizeof...(TYPES)>()))
 
template<typename F , typename ... TYPES>
auto TupleExpand (Tuple< TYPES ... > &&tup, F &&func) -> decltype(maxon::details::ExpandSeqHelper(std::move(tup), std::forward< F >(func), std::make_index_sequence< sizeof...(TYPES)>()))
 
template<typename ... TYPES>
auto ToTuple (TYPES &&... args) -> Tuple< typename std::decay< TYPES >::type ... >
 
template<typename... TYPES>
auto Tie (TYPES &... args) -> Tuple< TYPES &... >
 
template<typename... TYPES>
auto ToForwardTuple (TYPES &&... args) -> Tuple< TYPES &&... >
 
template<typename F , typename ... TYPES>
void TupleForEach (const Tuple< TYPES ... > &tup, F &&func)
 
template<typename F , typename ... TYPES>
void TupleForEach (Tuple< TYPES ... > &tup, F &&func)
 
template<typename F , typename ... TYPES>
void TupleForEach (Tuple< TYPES ... > &&tup, F &&func)
 
template<typename V , typename F , typename ... TYPES>
auto TupleFold (const Tuple< TYPES ... > &tup, const V &initialValue, F &&func) -> V
 
template<typename V , typename F , typename ... TYPES>
auto TupleFold (Tuple< TYPES ... > &tup, const V &initialValue, F &&func) -> V
 
template<typename V , typename F , typename ... TYPES>
auto TupleFold (Tuple< TYPES ... > &&tup, const V &initialValue, F &&func) -> V
 

Variables

static const IgnoredPlaceholder Ignore