Pack required boost code together.
[xy_vsfilter.git] / src / thirdparty / boost_1_47_0 / boost / mpl / aux_ / preprocessed / msvc60 / vector.hpp
blob6c6fca59e1606ceafef95f02c86dd2446c3141c0
2 // Copyright Aleksey Gurtovoy 2000-2004
3 //
4 // Distributed under the Boost Software License, Version 1.0.
5 // (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //
9 // Preprocessed version of "boost/mpl/vector.hpp" header
10 // -- DO NOT modify by hand!
12 namespace boost { namespace mpl {
14 namespace aux {
15 template< int N >
16 struct vector_chooser;
20 namespace aux {
22 template<>
23 struct vector_chooser<0>
25 template<
26 typename T0, typename T1, typename T2, typename T3, typename T4
27 , typename T5, typename T6, typename T7, typename T8, typename T9
28 , typename T10, typename T11, typename T12, typename T13, typename T14
29 , typename T15, typename T16, typename T17, typename T18, typename T19
31 struct result_
33 typedef vector0<
35 >::type type;
40 } // namespace aux
42 namespace aux {
44 template<>
45 struct vector_chooser<1>
47 template<
48 typename T0, typename T1, typename T2, typename T3, typename T4
49 , typename T5, typename T6, typename T7, typename T8, typename T9
50 , typename T10, typename T11, typename T12, typename T13, typename T14
51 , typename T15, typename T16, typename T17, typename T18, typename T19
53 struct result_
55 typedef typename vector1<
57 >::type type;
62 } // namespace aux
64 namespace aux {
66 template<>
67 struct vector_chooser<2>
69 template<
70 typename T0, typename T1, typename T2, typename T3, typename T4
71 , typename T5, typename T6, typename T7, typename T8, typename T9
72 , typename T10, typename T11, typename T12, typename T13, typename T14
73 , typename T15, typename T16, typename T17, typename T18, typename T19
75 struct result_
77 typedef typename vector2<
78 T0, T1
79 >::type type;
84 } // namespace aux
86 namespace aux {
88 template<>
89 struct vector_chooser<3>
91 template<
92 typename T0, typename T1, typename T2, typename T3, typename T4
93 , typename T5, typename T6, typename T7, typename T8, typename T9
94 , typename T10, typename T11, typename T12, typename T13, typename T14
95 , typename T15, typename T16, typename T17, typename T18, typename T19
97 struct result_
99 typedef typename vector3<
100 T0, T1, T2
101 >::type type;
106 } // namespace aux
108 namespace aux {
110 template<>
111 struct vector_chooser<4>
113 template<
114 typename T0, typename T1, typename T2, typename T3, typename T4
115 , typename T5, typename T6, typename T7, typename T8, typename T9
116 , typename T10, typename T11, typename T12, typename T13, typename T14
117 , typename T15, typename T16, typename T17, typename T18, typename T19
119 struct result_
121 typedef typename vector4<
122 T0, T1, T2, T3
123 >::type type;
128 } // namespace aux
130 namespace aux {
132 template<>
133 struct vector_chooser<5>
135 template<
136 typename T0, typename T1, typename T2, typename T3, typename T4
137 , typename T5, typename T6, typename T7, typename T8, typename T9
138 , typename T10, typename T11, typename T12, typename T13, typename T14
139 , typename T15, typename T16, typename T17, typename T18, typename T19
141 struct result_
143 typedef typename vector5<
144 T0, T1, T2, T3, T4
145 >::type type;
150 } // namespace aux
152 namespace aux {
154 template<>
155 struct vector_chooser<6>
157 template<
158 typename T0, typename T1, typename T2, typename T3, typename T4
159 , typename T5, typename T6, typename T7, typename T8, typename T9
160 , typename T10, typename T11, typename T12, typename T13, typename T14
161 , typename T15, typename T16, typename T17, typename T18, typename T19
163 struct result_
165 typedef typename vector6<
166 T0, T1, T2, T3, T4, T5
167 >::type type;
172 } // namespace aux
174 namespace aux {
176 template<>
177 struct vector_chooser<7>
179 template<
180 typename T0, typename T1, typename T2, typename T3, typename T4
181 , typename T5, typename T6, typename T7, typename T8, typename T9
182 , typename T10, typename T11, typename T12, typename T13, typename T14
183 , typename T15, typename T16, typename T17, typename T18, typename T19
185 struct result_
187 typedef typename vector7<
188 T0, T1, T2, T3, T4, T5, T6
189 >::type type;
194 } // namespace aux
196 namespace aux {
198 template<>
199 struct vector_chooser<8>
201 template<
202 typename T0, typename T1, typename T2, typename T3, typename T4
203 , typename T5, typename T6, typename T7, typename T8, typename T9
204 , typename T10, typename T11, typename T12, typename T13, typename T14
205 , typename T15, typename T16, typename T17, typename T18, typename T19
207 struct result_
209 typedef typename vector8<
210 T0, T1, T2, T3, T4, T5, T6, T7
211 >::type type;
216 } // namespace aux
218 namespace aux {
220 template<>
221 struct vector_chooser<9>
223 template<
224 typename T0, typename T1, typename T2, typename T3, typename T4
225 , typename T5, typename T6, typename T7, typename T8, typename T9
226 , typename T10, typename T11, typename T12, typename T13, typename T14
227 , typename T15, typename T16, typename T17, typename T18, typename T19
229 struct result_
231 typedef typename vector9<
232 T0, T1, T2, T3, T4, T5, T6, T7, T8
233 >::type type;
238 } // namespace aux
240 namespace aux {
242 template<>
243 struct vector_chooser<10>
245 template<
246 typename T0, typename T1, typename T2, typename T3, typename T4
247 , typename T5, typename T6, typename T7, typename T8, typename T9
248 , typename T10, typename T11, typename T12, typename T13, typename T14
249 , typename T15, typename T16, typename T17, typename T18, typename T19
251 struct result_
253 typedef typename vector10<
254 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9
255 >::type type;
260 } // namespace aux
262 namespace aux {
264 template<>
265 struct vector_chooser<11>
267 template<
268 typename T0, typename T1, typename T2, typename T3, typename T4
269 , typename T5, typename T6, typename T7, typename T8, typename T9
270 , typename T10, typename T11, typename T12, typename T13, typename T14
271 , typename T15, typename T16, typename T17, typename T18, typename T19
273 struct result_
275 typedef typename vector11<
276 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10
277 >::type type;
282 } // namespace aux
284 namespace aux {
286 template<>
287 struct vector_chooser<12>
289 template<
290 typename T0, typename T1, typename T2, typename T3, typename T4
291 , typename T5, typename T6, typename T7, typename T8, typename T9
292 , typename T10, typename T11, typename T12, typename T13, typename T14
293 , typename T15, typename T16, typename T17, typename T18, typename T19
295 struct result_
297 typedef typename vector12<
298 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11
299 >::type type;
304 } // namespace aux
306 namespace aux {
308 template<>
309 struct vector_chooser<13>
311 template<
312 typename T0, typename T1, typename T2, typename T3, typename T4
313 , typename T5, typename T6, typename T7, typename T8, typename T9
314 , typename T10, typename T11, typename T12, typename T13, typename T14
315 , typename T15, typename T16, typename T17, typename T18, typename T19
317 struct result_
319 typedef typename vector13<
320 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12
321 >::type type;
326 } // namespace aux
328 namespace aux {
330 template<>
331 struct vector_chooser<14>
333 template<
334 typename T0, typename T1, typename T2, typename T3, typename T4
335 , typename T5, typename T6, typename T7, typename T8, typename T9
336 , typename T10, typename T11, typename T12, typename T13, typename T14
337 , typename T15, typename T16, typename T17, typename T18, typename T19
339 struct result_
341 typedef typename vector14<
342 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13
343 >::type type;
348 } // namespace aux
350 namespace aux {
352 template<>
353 struct vector_chooser<15>
355 template<
356 typename T0, typename T1, typename T2, typename T3, typename T4
357 , typename T5, typename T6, typename T7, typename T8, typename T9
358 , typename T10, typename T11, typename T12, typename T13, typename T14
359 , typename T15, typename T16, typename T17, typename T18, typename T19
361 struct result_
363 typedef typename vector15<
364 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14
365 >::type type;
370 } // namespace aux
372 namespace aux {
374 template<>
375 struct vector_chooser<16>
377 template<
378 typename T0, typename T1, typename T2, typename T3, typename T4
379 , typename T5, typename T6, typename T7, typename T8, typename T9
380 , typename T10, typename T11, typename T12, typename T13, typename T14
381 , typename T15, typename T16, typename T17, typename T18, typename T19
383 struct result_
385 typedef typename vector16<
386 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15
387 >::type type;
392 } // namespace aux
394 namespace aux {
396 template<>
397 struct vector_chooser<17>
399 template<
400 typename T0, typename T1, typename T2, typename T3, typename T4
401 , typename T5, typename T6, typename T7, typename T8, typename T9
402 , typename T10, typename T11, typename T12, typename T13, typename T14
403 , typename T15, typename T16, typename T17, typename T18, typename T19
405 struct result_
407 typedef typename vector17<
408 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16
409 >::type type;
414 } // namespace aux
416 namespace aux {
418 template<>
419 struct vector_chooser<18>
421 template<
422 typename T0, typename T1, typename T2, typename T3, typename T4
423 , typename T5, typename T6, typename T7, typename T8, typename T9
424 , typename T10, typename T11, typename T12, typename T13, typename T14
425 , typename T15, typename T16, typename T17, typename T18, typename T19
427 struct result_
429 typedef typename vector18<
430 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17
431 >::type type;
436 } // namespace aux
438 namespace aux {
440 template<>
441 struct vector_chooser<19>
443 template<
444 typename T0, typename T1, typename T2, typename T3, typename T4
445 , typename T5, typename T6, typename T7, typename T8, typename T9
446 , typename T10, typename T11, typename T12, typename T13, typename T14
447 , typename T15, typename T16, typename T17, typename T18, typename T19
449 struct result_
451 typedef typename vector19<
452 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18
453 >::type type;
458 } // namespace aux
460 namespace aux {
462 template<>
463 struct vector_chooser<20>
465 template<
466 typename T0, typename T1, typename T2, typename T3, typename T4
467 , typename T5, typename T6, typename T7, typename T8, typename T9
468 , typename T10, typename T11, typename T12, typename T13, typename T14
469 , typename T15, typename T16, typename T17, typename T18, typename T19
471 struct result_
473 typedef typename vector20<
474 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
475 >::type type;
480 } // namespace aux
482 namespace aux {
484 template< typename T >
485 struct is_vector_arg
487 BOOST_STATIC_CONSTANT(bool, value = true);
490 template<>
491 struct is_vector_arg<na>
493 BOOST_STATIC_CONSTANT(bool, value = false);
496 template<
497 typename T1, typename T2, typename T3, typename T4, typename T5
498 , typename T6, typename T7, typename T8, typename T9, typename T10
499 , typename T11, typename T12, typename T13, typename T14, typename T15
500 , typename T16, typename T17, typename T18, typename T19, typename T20
502 struct vector_count_args
504 BOOST_STATIC_CONSTANT(int, value =
505 is_vector_arg<T1>::value + is_vector_arg<T2>::value
506 + is_vector_arg<T3>::value + is_vector_arg<T4>::value
507 + is_vector_arg<T5>::value + is_vector_arg<T6>::value
508 + is_vector_arg<T7>::value + is_vector_arg<T8>::value
509 + is_vector_arg<T9>::value + is_vector_arg<T10>::value
510 + is_vector_arg<T11>::value + is_vector_arg<T12>::value
511 + is_vector_arg<T13>::value + is_vector_arg<T14>::value
512 + is_vector_arg<T15>::value + is_vector_arg<T16>::value
513 + is_vector_arg<T17>::value + is_vector_arg<T18>::value
514 + is_vector_arg<T19>::value + is_vector_arg<T20>::value
519 template<
520 typename T0, typename T1, typename T2, typename T3, typename T4
521 , typename T5, typename T6, typename T7, typename T8, typename T9
522 , typename T10, typename T11, typename T12, typename T13, typename T14
523 , typename T15, typename T16, typename T17, typename T18, typename T19
525 struct vector_impl
527 typedef aux::vector_count_args<
528 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
529 > arg_num_;
531 typedef typename aux::vector_chooser< arg_num_::value >
532 ::template result_< T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14,T15,T16,T17,T18,T19 >::type type;
535 } // namespace aux
537 template<
538 typename T0 = na, typename T1 = na, typename T2 = na, typename T3 = na
539 , typename T4 = na, typename T5 = na, typename T6 = na, typename T7 = na
540 , typename T8 = na, typename T9 = na, typename T10 = na, typename T11 = na
541 , typename T12 = na, typename T13 = na, typename T14 = na
542 , typename T15 = na, typename T16 = na, typename T17 = na
543 , typename T18 = na, typename T19 = na
545 struct vector
546 : aux::vector_impl<
547 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
548 >::type
550 typedef typename aux::vector_impl<
551 T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19
552 >::type type;