]> git.cworth.org Git - vogl/blob - src/extlib/loki/include/loki/TypelistMacros.h
Initial vogl checkin
[vogl] / src / extlib / loki / include / loki / TypelistMacros.h
1 ////////////////////////////////////////////////////////////////////////////////
2 // The Loki Library
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_
17
18 // $Id: TypelistMacros.h 749 2006-10-17 19:49:26Z syntheticpp $
19
20
21 //#define LOKI_DISABLE_TYPELIST_MACROS
22 #ifndef LOKI_DISABLE_TYPELIST_MACROS
23
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 ////////////////////////////////////////////////////////////////////////////////
31
32 #define LOKI_TYPELIST_1(T1) ::Loki::Typelist<T1, ::Loki::NullType>
33
34 #define LOKI_TYPELIST_2(T1, T2) ::Loki::Typelist<T1, LOKI_TYPELIST_1(T2) >
35
36 #define LOKI_TYPELIST_3(T1, T2, T3) ::Loki::Typelist<T1, LOKI_TYPELIST_2(T2, T3) >
37
38 #define LOKI_TYPELIST_4(T1, T2, T3, T4) \
39     ::Loki::Typelist<T1, LOKI_TYPELIST_3(T2, T3, T4) >
40
41 #define LOKI_TYPELIST_5(T1, T2, T3, T4, T5) \
42     ::Loki::Typelist<T1, LOKI_TYPELIST_4(T2, T3, T4, T5) >
43
44 #define LOKI_TYPELIST_6(T1, T2, T3, T4, T5, T6) \
45     ::Loki::Typelist<T1, LOKI_TYPELIST_5(T2, T3, T4, T5, T6) >
46
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) >
49
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) >
52
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) >
55
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) >
58
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) >
61
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, \
64         T11, T12) >
65
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, \
68         T11, T12, T13) >
69
70 #define LOKI_TYPELIST_14(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, \
71         T11, T12, T13, T14) \
72     ::Loki::Typelist<T1, LOKI_TYPELIST_13(T2, T3, T4, T5, T6, T7, T8, T9, T10, \
73         T11, T12, T13, T14) >
74
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) >
79
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) >
84
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) >
89
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) >
94
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) >
99
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) >
104
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) >
109
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) >
114
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) >
119
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) >
124
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) >
130
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) >
137
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) >
144
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) >
151
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) >
158
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) >
165
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) >
172
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) >
179
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) >
186
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) >
193
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) >
202
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) >
211
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) >
220
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) >
229
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) >
238
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) >
247
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) >
256
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) >
265
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) >
274
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) >
283
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) >
294
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) >
305
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) >
316
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) >
327
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) >
338
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) >
349
350 #endif //LOKI_DISABLE_TYPELIST_MACROS
351
352 #endif // end file guardian
353