2 #include <mpl/typelist/TypeList.h>
6 #include <mpl/typelist/Sort.h>
9 #define OPTIMIZE_TUPLE_SIZE 1
28 template <
class TListPos,
class TListSorted,
int size>
class Tuple_Base;
30 #define MAKE_COMPONENT( N ) \
31 template <class T> class Component<T,N> \
33 typedef typename TypeTraits< T >::ParameterType TArgRef; \
36 Component( TArgRef arg):mArg( arg ){}; \
48 #if OPTIMIZE_TUPLE_SIZE == 1
54 enum {result = -(int)
sizeof(T)};
70 template <
class TTypes,
class SortedTypes>
class Tuple_Base<TTypes,SortedTypes,1> :
71 public Component<typename Element<typename SortedTypes::Sorted,0,true>::Result,0 >
82 template <
class TTypes,
class SortedTypes>
class Tuple_Base<TTypes,SortedTypes,2> :
83 public Component<typename Element<typename SortedTypes::Sorted,0,true>::Result,0 >,
84 public Component<typename Element<typename SortedTypes::Sorted,1,true>::Result,1 >
98 template <
class TTypes,
class SortedTypes>
class Tuple_Base<TTypes,SortedTypes,3> :
99 public Component<typename Element<typename SortedTypes::Sorted,0,true>::Result,0 >,
100 public Component<typename Element<typename SortedTypes::Sorted,1,true>::Result,1 >,
101 public Component<typename Element<typename SortedTypes::Sorted,2,true>::Result,2 >
120 template <
class TTypes,
class SortedTypes>
class Tuple_Base<TTypes,SortedTypes,4> :
121 public Component<typename Element<typename SortedTypes::Sorted,0,true>::Result,0 >,
122 public Component<typename Element<typename SortedTypes::Sorted,1,true>::Result,1 >,
123 public Component<typename Element<typename SortedTypes::Sorted,2,true>::Result,2 >,
124 public Component<typename Element<typename SortedTypes::Sorted,3,true>::Result,3 >
145 template <
class TTypes,
class SortedTypes>
class Tuple_Base<TTypes,SortedTypes,5> :
146 public Component<typename Element<typename SortedTypes::Sorted,0,true>::Result,0 >,
147 public Component<typename Element<typename SortedTypes::Sorted,1,true>::Result,1 >,
148 public Component<typename Element<typename SortedTypes::Sorted,2,true>::Result,2 >,
149 public Component<typename Element<typename SortedTypes::Sorted,3,true>::Result,3 >,
150 public Component<typename Element<typename SortedTypes::Sorted,4,true>::Result,4 >
175 template <
class TTypes,
class SortedTypes>
class Tuple_Base<TTypes,SortedTypes,6> :
176 public Component<typename Element<typename SortedTypes::Sorted,0,true>::Result,0 >,
177 public Component<typename Element<typename SortedTypes::Sorted,1,true>::Result,1 >,
178 public Component<typename Element<typename SortedTypes::Sorted,2,true>::Result,2 >,
179 public Component<typename Element<typename SortedTypes::Sorted,3,true>::Result,3 >,
180 public Component<typename Element<typename SortedTypes::Sorted,4,true>::Result,4 >,
181 public Component<typename Element<typename SortedTypes::Sorted,5,true>::Result,5 >
209 template <
class TTypes,
class SortedTypes>
class Tuple_Base<TTypes,SortedTypes,7> :
210 public Component<typename Element<typename SortedTypes::Sorted,0,true>::Result,0 >,
211 public Component<typename Element<typename SortedTypes::Sorted,1,true>::Result,1 >,
212 public Component<typename Element<typename SortedTypes::Sorted,2,true>::Result,2 >,
213 public Component<typename Element<typename SortedTypes::Sorted,3,true>::Result,3 >,
214 public Component<typename Element<typename SortedTypes::Sorted,4,true>::Result,4 >,
215 public Component<typename Element<typename SortedTypes::Sorted,5,true>::Result,5 >,
216 public Component<typename Element<typename SortedTypes::Sorted,6,true>::Result,6 >
251 template <
class TTypes >
class Tuple :
public _private::Tuple_Base< TTypes,typename mel::mpl::typelist::Sort<TTypes,_private::PackCondition>::Result, Length<TTypes>::result >
281 Tuple(
TArg1Ref arg1,
TArg2Ref arg2,
TArg3Ref arg3,
TArg4Ref arg4,
TArg5Ref arg5,
TArg6Ref arg6):
BaseClass( arg1, arg2,arg3,arg4,arg5,arg6 ){}
282 Tuple(
TArg1Ref arg1,
TArg2Ref arg2,
TArg3Ref arg3,
TArg4Ref arg4,
TArg5Ref arg5,
TArg6Ref arg6,
TArg7Ref arg7):
BaseClass( arg1, arg2,arg3,arg4,arg5,arg6,arg7 ){}
287 template <
int n>
inline
294 template <
int n>
inline
Typical Traits for types.
Definition: BasicTypes.h:7
Definition: Callback_Impl.h:11
Definition: TypeList.h:17