1 ////////////////////////////////////////////////////////////////////////////////
3 // Copyright (c) 2001 by Andrei Alexandrescu
4 // This code accompanies the book:
5 // Alexandrescu, Andrei. "Modern C++ Design: Generic Programming and Design
6 // Patterns Applied". Copyright (c) 2001. Addison-Wesley.
7 // Permission to use, copy, modify, distribute and sell this software for any
8 // purpose is hereby granted without fee, provided that the above copyright
9 // notice appear in all copies and that both that copyright notice and this
10 // permission notice appear in supporting documentation.
11 // The author or Addison-Welsey Longman make no representations about the
12 // suitability of this software for any purpose. It is provided "as is"
13 // without express or implied warranty.
14 ////////////////////////////////////////////////////////////////////////////////
15 #ifndef LOKI_TYPELISTMACROS_INC_
16 #define LOKI_TYPELISTMACROS_INC_
18 // $Id: TypelistMacros.h 749 2006-10-17 19:49:26Z syntheticpp $
21 //#define LOKI_DISABLE_TYPELIST_MACROS
22 #ifndef LOKI_DISABLE_TYPELIST_MACROS
24 ////////////////////////////////////////////////////////////////////////////////
25 // macros LOKI_TYPELIST_1, LOKI_TYPELIST_2, ... LOKI_TYPELIST_50
26 // Each takes a number of arguments equal to its numeric suffix
27 // The arguments are type names. LOKI_TYPELIST_NN generates a typelist containing
28 // all types passed as arguments, in that order.
29 // Example: LOKI_TYPELIST_2(char, int) generates a type containing char and int.
30 ////////////////////////////////////////////////////////////////////////////////
32 #define LOKI_TYPELIST_1(T1) ::Loki::Typelist<T1, ::Loki::NullType>
34 #define LOKI_TYPELIST_2(T1, T2) ::Loki::Typelist<T1, LOKI_TYPELIST_1(T2) >
36 #define LOKI_TYPELIST_3(T1, T2, T3) ::Loki::Typelist<T1, LOKI_TYPELIST_2(T2, T3) >
38 #define LOKI_TYPELIST_4(T1, T2, T3, T4) \
39 ::Loki::Typelist<T1, LOKI_TYPELIST_3(T2, T3, T4) >
41 #define LOKI_TYPELIST_5(T1, T2, T3, T4, T5) \
42 ::Loki::Typelist<T1, LOKI_TYPELIST_4(T2, T3, T4, T5) >
44 #define LOKI_TYPELIST_6(T1, T2, T3, T4, T5, T6) \
45 ::Loki::Typelist<T1, LOKI_TYPELIST_5(T2, T3, T4, T5, T6) >
47 #define LOKI_TYPELIST_7(T1, T2, T3, T4, T5, T6, T7) \
48 ::Loki::Typelist<T1, LOKI_TYPELIST_6(T2, T3, T4, T5, T6, T7) >
50 #define LOKI_TYPELIST_8(T1, T2, T3, T4, T5, T6, T7, T8) \
51 ::Loki::Typelist<T1, LOKI_TYPELIST_7(T2, T3, T4, T5, T6, T7, T8) >
53 #define LOKI_TYPELIST_9(T1, T2, T3, T4, T5, T6, T7, T8, T9) \
54 ::Loki::Typelist<T1, LOKI_TYPELIST_8(T2, T3, T4, T5, T6, T7, T8, T9) >
56 #define LOKI_TYPELIST_10(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) \
57 ::Loki::Typelist<T1, LOKI_TYPELIST_9(T2, T3, T4, T5, T6, T7, T8, T9, T10) >
59 #define LOKI_TYPELIST_11(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) \
60 ::Loki::Typelist<T1, LOKI_TYPELIST_10(T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) >
62 #define LOKI_TYPELIST_12(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) \
63 ::Loki::Typelist<T1, LOKI_TYPELIST_11(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
66 #define LOKI_TYPELIST_13(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) \
67 ::Loki::Typelist<T1, LOKI_TYPELIST_12(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
70 #define LOKI_TYPELIST_14(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
72 ::Loki::Typelist<T1, LOKI_TYPELIST_13(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
75 #define LOKI_TYPELIST_15(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
76 T11, T12, T13, T14, T15) \
77 ::Loki::Typelist<T1, LOKI_TYPELIST_14(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
78 T11, T12, T13, T14, T15) >
80 #define LOKI_TYPELIST_16(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
81 T11, T12, T13, T14, T15, T16) \
82 ::Loki::Typelist<T1, LOKI_TYPELIST_15(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
83 T11, T12, T13, T14, T15, T16) >
85 #define LOKI_TYPELIST_17(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
86 T11, T12, T13, T14, T15, T16, T17) \
87 ::Loki::Typelist<T1, LOKI_TYPELIST_16(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
88 T11, T12, T13, T14, T15, T16, T17) >
90 #define LOKI_TYPELIST_18(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
91 T11, T12, T13, T14, T15, T16, T17, T18) \
92 ::Loki::Typelist<T1, LOKI_TYPELIST_17(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
93 T11, T12, T13, T14, T15, T16, T17, T18) >
95 #define LOKI_TYPELIST_19(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
96 T11, T12, T13, T14, T15, T16, T17, T18, T19) \
97 ::Loki::Typelist<T1, LOKI_TYPELIST_18(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
98 T11, T12, T13, T14, T15, T16, T17, T18, T19) >
100 #define LOKI_TYPELIST_20(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
101 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) \
102 ::Loki::Typelist<T1, LOKI_TYPELIST_19(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
103 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) >
105 #define LOKI_TYPELIST_21(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
106 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) \
107 ::Loki::Typelist<T1, LOKI_TYPELIST_20(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
108 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) >
110 #define LOKI_TYPELIST_22(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
111 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) \
112 ::Loki::Typelist<T1, LOKI_TYPELIST_21(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
113 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) >
115 #define LOKI_TYPELIST_23(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
116 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) \
117 ::Loki::Typelist<T1, LOKI_TYPELIST_22(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
118 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) >
120 #define LOKI_TYPELIST_24(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
121 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) \
122 ::Loki::Typelist<T1, LOKI_TYPELIST_23(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
123 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) >
125 #define LOKI_TYPELIST_25(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
126 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25) \
127 ::Loki::Typelist<T1, LOKI_TYPELIST_24(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
128 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
129 T21, T22, T23, T24, T25) >
131 #define LOKI_TYPELIST_26(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
132 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
133 T21, T22, T23, T24, T25, T26) \
134 ::Loki::Typelist<T1, LOKI_TYPELIST_25(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
135 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
136 T21, T22, T23, T24, T25, T26) >
138 #define LOKI_TYPELIST_27(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
139 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
140 T21, T22, T23, T24, T25, T26, T27) \
141 ::Loki::Typelist<T1, LOKI_TYPELIST_26(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
142 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
143 T21, T22, T23, T24, T25, T26, T27) >
145 #define LOKI_TYPELIST_28(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
146 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
147 T21, T22, T23, T24, T25, T26, T27, T28) \
148 ::Loki::Typelist<T1, LOKI_TYPELIST_27(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
149 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
150 T21, T22, T23, T24, T25, T26, T27, T28) >
152 #define LOKI_TYPELIST_29(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
153 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
154 T21, T22, T23, T24, T25, T26, T27, T28, T29) \
155 ::Loki::Typelist<T1, LOKI_TYPELIST_28(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
156 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
157 T21, T22, T23, T24, T25, T26, T27, T28, T29) >
159 #define LOKI_TYPELIST_30(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
160 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
161 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) \
162 ::Loki::Typelist<T1, LOKI_TYPELIST_29(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
163 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
164 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30) >
166 #define LOKI_TYPELIST_31(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
167 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
168 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) \
169 ::Loki::Typelist<T1, LOKI_TYPELIST_30(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
170 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
171 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31) >
173 #define LOKI_TYPELIST_32(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
174 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
175 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) \
176 ::Loki::Typelist<T1, LOKI_TYPELIST_31(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
177 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
178 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32) >
180 #define LOKI_TYPELIST_33(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
181 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
182 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) \
183 ::Loki::Typelist<T1, LOKI_TYPELIST_32(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
184 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
185 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33) >
187 #define LOKI_TYPELIST_34(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
188 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
189 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) \
190 ::Loki::Typelist<T1, LOKI_TYPELIST_33(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
191 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
192 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34) >
194 #define LOKI_TYPELIST_35(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
195 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
196 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
197 T31, T32, T33, T34, T35) \
198 ::Loki::Typelist<T1, LOKI_TYPELIST_34(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
199 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
200 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
201 T31, T32, T33, T34, T35) >
203 #define LOKI_TYPELIST_36(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
204 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
205 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
206 T31, T32, T33, T34, T35, T36) \
207 ::Loki::Typelist<T1, LOKI_TYPELIST_35(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
208 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
209 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
210 T31, T32, T33, T34, T35, T36) >
212 #define LOKI_TYPELIST_37(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
213 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
214 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
215 T31, T32, T33, T34, T35, T36, T37) \
216 ::Loki::Typelist<T1, LOKI_TYPELIST_36(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
217 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
218 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
219 T31, T32, T33, T34, T35, T36, T37) >
221 #define LOKI_TYPELIST_38(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
222 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
223 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
224 T31, T32, T33, T34, T35, T36, T37, T38) \
225 ::Loki::Typelist<T1, LOKI_TYPELIST_37(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
226 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
227 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
228 T31, T32, T33, T34, T35, T36, T37, T38) >
230 #define LOKI_TYPELIST_39(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
231 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
232 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
233 T31, T32, T33, T34, T35, T36, T37, T38, T39) \
234 ::Loki::Typelist<T1, LOKI_TYPELIST_38(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
235 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
236 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
237 T31, T32, T33, T34, T35, T36, T37, T38, T39) >
239 #define LOKI_TYPELIST_40(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
240 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
241 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
242 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) \
243 ::Loki::Typelist<T1, LOKI_TYPELIST_39(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
244 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
245 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
246 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40) >
248 #define LOKI_TYPELIST_41(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
249 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
250 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
251 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) \
252 ::Loki::Typelist<T1, LOKI_TYPELIST_40(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
253 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
254 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
255 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41) >
257 #define LOKI_TYPELIST_42(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
258 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
259 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
260 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) \
261 ::Loki::Typelist<T1, LOKI_TYPELIST_41(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
262 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
263 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
264 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42) >
266 #define LOKI_TYPELIST_43(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
267 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
268 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
269 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) \
270 ::Loki::Typelist<T1, LOKI_TYPELIST_42(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
271 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
272 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
273 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43) >
275 #define LOKI_TYPELIST_44(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
276 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
277 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
278 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) \
279 ::Loki::Typelist<T1, LOKI_TYPELIST_43(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
280 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
281 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
282 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44) >
284 #define LOKI_TYPELIST_45(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
285 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
286 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
287 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
288 T41, T42, T43, T44, T45) \
289 ::Loki::Typelist<T1, LOKI_TYPELIST_44(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
290 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
291 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
292 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
293 T41, T42, T43, T44, T45) >
295 #define LOKI_TYPELIST_46(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
296 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
297 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
298 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
299 T41, T42, T43, T44, T45, T46) \
300 ::Loki::Typelist<T1, LOKI_TYPELIST_45(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
301 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
302 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
303 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
304 T41, T42, T43, T44, T45, T46) >
306 #define LOKI_TYPELIST_47(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
307 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
308 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
309 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
310 T41, T42, T43, T44, T45, T46, T47) \
311 ::Loki::Typelist<T1, LOKI_TYPELIST_46(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
312 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
313 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
314 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
315 T41, T42, T43, T44, T45, T46, T47) >
317 #define LOKI_TYPELIST_48(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
318 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
319 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
320 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
321 T41, T42, T43, T44, T45, T46, T47, T48) \
322 ::Loki::Typelist<T1, LOKI_TYPELIST_47(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
323 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
324 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
325 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
326 T41, T42, T43, T44, T45, T46, T47, T48) >
328 #define LOKI_TYPELIST_49(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
329 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
330 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
331 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
332 T41, T42, T43, T44, T45, T46, T47, T48, T49) \
333 ::Loki::Typelist<T1, LOKI_TYPELIST_48(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
334 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
335 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
336 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
337 T41, T42, T43, T44, T45, T46, T47, T48, T49) >
339 #define LOKI_TYPELIST_50(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
340 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
341 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
342 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
343 T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) \
344 ::Loki::Typelist<T1, LOKI_TYPELIST_49(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
345 T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, \
346 T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, \
347 T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, \
348 T41, T42, T43, T44, T45, T46, T47, T48, T49, T50) >
350 #endif //LOKI_DISABLE_TYPELIST_MACROS
352 #endif // end file guardian