annotate addon/template_10_typelist.d @ 1576:b3e16c86558e

[Issue 1398] New: GDC doesn't generate correct code <mariusmuja@gmail.com> 2007-08-04 http://d.puremagic.com/issues/show_bug.cgi?id=1398
author thomask
date Thu, 21 Feb 2008 15:20:08 +0000
parents 9603ea1557fc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
223
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
1 /*
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
2 Thor - D Metaprogramming Library
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
3 version zero
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
4 (c) 2004-2005 Aleksey Bobnev
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
5
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
6 Public Domain
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
7
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
8 Thanks go to:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
9 Andrei Alexandrescu - for admirable book "Modern C++ Design" and Loki library
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
10 Andy Friesen - for apropos library, which actually pioneered meta-programming in D
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
11 */
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
12 /+module Thor.typelist;+/
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
13 module addon.template_10_typelist;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
14
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
15 private
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
16 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
17 /+import Thor.meta;+/
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
18 import addon.template_10_meta;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
19 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
20
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
21
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
22 class TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
23 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
24 alias NullT H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
25 alias NullT T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
26 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
27 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
28 static const int Length = 0;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
29 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
30 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
31
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
32 template Length(_TL : TypeList)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
33 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
34 static const int Length = 1 + .Length!(_TL.T);
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
35 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
36
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
37 template Length(_TL : NullT)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
38 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
39 static const int Length = 0;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
40 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
41
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
42
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
43 template RemoveAll(_TL : TypeList, T)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
44 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
45 alias SelectType!(Equal!(_TL.H,T),.RemoveAll!(_TL.T,T),
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
46 .Cons!(_TL.H,.RemoveAll!(_TL.T,T))
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
47 ) RemoveAll;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
48 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
49
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
50 template RemoveAll(_TL : NullT, T)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
51 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
52 alias NullT RemoveAll;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
53 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
54
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
55 template RemoveAll(_TL, T : NullT)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
56 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
57 alias _TL RemoveAll;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
58 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
59
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
60 template TypeidPrint(_TL : TypeList)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
61 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
62 void TypeidPrint()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
63 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
64 typeid(_TL.H).print();
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
65 .TypeidPrint!(_TL.T)();
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
66 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
67 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
68
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
69 template TypeidPrint(_T)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
70 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
71 void TypeidPrint()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
72 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
73 typeid(_T).print();
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
74 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
75 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
76
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
77 template TypeidPrint(_TL : NullT)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
78 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
79 void TypeidPrint()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
80 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
81 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
82 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
83
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
84 /*
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
85 Construct type list from head and tail
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
86 typical use :
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
87 Cons!(A,Cons!(B,Cons!(C,NullT)))
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
88 */
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
89 template Cons(_Head, _Tail : TypeList)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
90 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
91 class Cons : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
92 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
93 alias _Head H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
94 alias _Tail T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
95 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
96 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
97 static const int Length = 1 + .Length!(T);
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
98 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
99 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
100 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
101
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
102 template Cons(_Head : NullT, _Tail : TypeList)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
103 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
104 class Cons : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
105 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
106 alias _Tail.H H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
107 alias _Tail.T T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
108 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
109 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
110 static const int Length = .Length!(_Tail);
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
111 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
112 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
113 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
114
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
115 template Cons(_Head, _Tail : NullT)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
116 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
117 class Cons : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
118 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
119 alias _Head H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
120 alias _Tail T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
121 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
122 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
123 static const int Length = 1;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
124 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
125 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
126 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
127
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
128 template TL(T0)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
129 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
130 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
131 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
132 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
133 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
134 alias NullT T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
135 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
136 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
137 static const int Length = 1;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
138 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
139 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
140 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
141
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
142 // auto-generated up to 20 parameters
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
143 template TL(T0,T1)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
144 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
145 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
146 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
147 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
148 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
149 alias .TL!(T1) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
150 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
151 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
152 static const int Length = 2;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
153 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
154 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
155 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
156 template TL(T0,T1,T2)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
157 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
158 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
159 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
160 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
161 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
162 alias .TL!(T1,T2) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
163 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
164 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
165 static const int Length = 3;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
166 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
167 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
168 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
169 template TL(T0,T1,T2,T3)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
170 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
171 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
172 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
173 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
174 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
175 alias .TL!(T1,T2,T3) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
176 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
177 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
178 static const int Length = 4;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
179 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
180 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
181 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
182 template TL(T0,T1,T2,T3,T4)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
183 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
184 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
185 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
186 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
187 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
188 alias .TL!(T1,T2,T3,T4) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
189 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
190 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
191 static const int Length = 5;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
192 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
193 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
194 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
195 template TL(T0,T1,T2,T3,T4,T5)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
196 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
197 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
198 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
199 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
200 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
201 alias .TL!(T1,T2,T3,T4,T5) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
202 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
203 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
204 static const int Length = 6;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
205 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
206 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
207 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
208 template TL(T0,T1,T2,T3,T4,T5,T6)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
209 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
210 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
211 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
212 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
213 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
214 alias .TL!(T1,T2,T3,T4,T5,T6) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
215 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
216 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
217 static const int Length = 7;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
218 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
219 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
220 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
221 template TL(T0,T1,T2,T3,T4,T5,T6,T7)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
222 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
223 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
224 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
225 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
226 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
227 alias .TL!(T1,T2,T3,T4,T5,T6,T7) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
228 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
229 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
230 static const int Length = 8;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
231 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
232 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
233 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
234 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
235 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
236 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
237 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
238 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
239 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
240 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
241 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
242 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
243 static const int Length = 9;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
244 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
245 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
246 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
247 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
248 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
249 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
250 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
251 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
252 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
253 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
254 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
255 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
256 static const int Length = 10;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
257 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
258 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
259 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
260 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
261 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
262 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
263 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
264 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
265 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
266 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
267 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
268 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
269 static const int Length = 11;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
270 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
271 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
272 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
273 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
274 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
275 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
276 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
277 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
278 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
279 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
280 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
281 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
282 static const int Length = 12;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
283 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
284 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
285 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
286 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
287 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
288 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
289 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
290 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
291 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
292 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
293 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
294 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
295 static const int Length = 13;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
296 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
297 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
298 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
299 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
300 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
301 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
302 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
303 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
304 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
305 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
306 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
307 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
308 static const int Length = 14;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
309 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
310 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
311 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
312 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
313 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
314 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
315 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
316 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
317 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
318 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
319 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
320 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
321 static const int Length = 15;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
322 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
323 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
324 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
325 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
326 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
327 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
328 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
329 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
330 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
331 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
332 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
333 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
334 static const int Length = 16;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
335 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
336 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
337 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
338 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
339 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
340 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
341 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
342 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
343 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
344 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
345 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
346 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
347 static const int Length = 17;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
348 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
349 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
350 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
351 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
352 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
353 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
354 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
355 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
356 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
357 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
358 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
359 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
360 static const int Length = 18;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
361 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
362 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
363 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
364 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
365 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
366 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
367 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
368 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
369 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
370 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
371 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
372 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
373 static const int Length = 19;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
374 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
375 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
376 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
377 template TL(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19)
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
378 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
379 class TL : TypeList
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
380 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
381 public:
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
382 alias T0 H;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
383 alias .TL!(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19) T;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
384 template Length()
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
385 {
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
386 static const int Length = 20;
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
387 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
388 }
9603ea1557fc template specialization bug
thomask
parents:
diff changeset
389 }