36 template <
bool flag,
typename T,
typename U>
41 template <
typename T,
typename U>
47 template <
int v>
struct Int2Type {
enum { value = v }; };
49 template<
class T,
int i>
struct IsIntType {
enum { value =
false }; };
69 template <
class T,
class U>
115 template <
class TList,
class T>
129 #define TYPELIST_0() trUtil::NullType 130 #define TYPELIST_1(T1) trUtil::TypeList<T1, TYPELIST_0()> 131 #define TYPELIST_2(T1, T2) trUtil::TypeList<T1, TYPELIST_1(T2)> 132 #define TYPELIST_3(T1, T2, T3) trUtil::TypeList<T1, TYPELIST_2(T2, T3)> 133 #define TYPELIST_4(T1, T2, T3, T4) trUtil::TypeList<T1, TYPELIST_3(T2, T3, T4)> 134 #define TYPELIST_5(T1, T2, T3, T4, T5) trUtil::TypeList<T1, TYPELIST_4(T2, T3, T4, T5)> 135 #define TYPELIST_6(T1, T2, T3, T4, T5, T6) trUtil::TypeList<T1, TYPELIST_5(T2, T3, T4, T5, T6)> 136 #define TYPELIST_7(T1, T2, T3, T4, T5, T6, T7) trUtil::TypeList<T1, TYPELIST_6(T2, T3, T4, T5, T6, T7)> 137 #define TYPELIST_8(T1, T2, T3, T4, T5, T6, T7, T8) trUtil::TypeList<T1, TYPELIST_7(T2, T3, T4, T5, T6, T7, T8)> 144 template <
class T,
class U>
150 template <
class TList,
unsigned int i>
struct TypeAt;
151 template <
class T,
class U>
156 template <
class T,
class U,
unsigned int i>
162 template <
class TList,
unsigned int i,
typename DefType = NullType>
167 template <
class T,
class U,
typename DefType>
172 template <
class T,
class U,
unsigned int i,
typename DefType>
190 template <
typename TList,
template <
class,
unsigned int>
class Holder,
unsigned int i = 0>
struct InstantiateH;
191 template <
typename T,
typename U,
template <
class,
unsigned int>
class Holder,
unsigned int i>
193 :
public Holder<typename TypeList<T, U>::Head, i>
194 ,
public InstantiateH<typename TypeList<T, U>::Tail, Holder, i + 1>
197 using LeftBase = Holder<typename TypeList<T, U>::Head, i>;
204 template <
template <
class,
unsigned int>
class Holder,
unsigned int i>
210 template <
typename InstH,
unsigned int j,
unsigned int i = 0>
struct TailAt;
211 template <
typename T,
typename U,
template <
class,
unsigned int>
class Holder,
unsigned int i>
216 template <
typename T,
typename U,
template <
class,
unsigned int>
class Holder,
unsigned int j,
unsigned int i>
223 template <
typename T,
typename U,
template <
class,
unsigned int>
class Holder,
unsigned int i>
231 template <
unsigned int j,
typename T,
typename U,
template <
class,
unsigned int>
class Holder,
unsigned int i>
240 template <
unsigned int j,
class Instantiated>
inline 246 template <
unsigned int j,
class Instantiated>
inline typename TypeAt< U, i - 1 >::Result Result
typename Instance::RightBase RightBase
static TargetHolder & Get(Instance &h)
InstantiateH(typename TypeList< T, U >::Head h, NullType)
typename TypeAtNonStrict< U, i - 1, DefType >::Result Result
static TargetHolder const & Get(Instance const &h)
InstantiateH(typename TypeList< T, U >::Head h)
InstantiateH(typename TypeList< T, U >::Head h, RightBase const &t)
static TargetHolder const & Get(Instance const &h)
InstantiateHAccessor< j, Instantiated, Instantiated::ordern >::TargetHolder & GetH(Instantiated &h)
Holder< typename TypeAt< TypeList< T, U >, j >::Result, j+i > TargetHolder
Namespace that holds various utility classes for the engine.
Holder< typename TypeList< T, U >::Head, i > LeftBase
typename Instance::LeftBase TargetHolder
TupleHolder & operator=(TupleHolder const &v)
static TargetHolder & Get(Instance &h)
typename TailAt< InstantiateH< typename TypeList< T, U >::Tail, Holder, i+1 >, j - 1, i+1 >::Result Result