]> git.donarmstrong.com Git - rsem.git/blob - boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp
RSEM Source Codes
[rsem.git] / boost / mpl / vector / aux_ / preprocessed / plain / vector20.hpp
1
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 //
8
9 // Preprocessed version of "boost/mpl/vector/vector20.hpp" header
10 // -- DO NOT modify by hand!
11
12 namespace boost { namespace mpl {
13
14 template<
15       typename T0, typename T1, typename T2, typename T3, typename T4
16     , typename T5, typename T6, typename T7, typename T8, typename T9
17     , typename T10
18     >
19 struct vector11
20 {
21     typedef aux::vector_tag<11> tag;
22     typedef vector11 type;
23     typedef T0 item0;
24     typedef T1 item1;
25     typedef T2 item2;
26     typedef T3 item3;
27     typedef T4 item4;
28     typedef T5 item5;
29     typedef T6 item6;
30     typedef T7 item7;
31     typedef T8 item8;
32     typedef T9 item9;
33     typedef T10 item10;
34     
35
36     typedef void_ item11;
37     typedef T10 back;
38     typedef v_iter< type,0 > begin;
39     typedef v_iter< type,11 > end;
40 };
41
42 template<>
43 struct push_front_impl< aux::vector_tag<10> >
44 {
45     template< typename Vector, typename T > struct apply
46     {
47         typedef vector11<
48               T
49               ,
50               typename Vector::item0, typename Vector::item1
51             , typename Vector::item2, typename Vector::item3
52             , typename Vector::item4, typename Vector::item5
53             , typename Vector::item6, typename Vector::item7
54             , typename Vector::item8, typename Vector::item9
55             > type;
56     };
57 };
58
59 template<>
60 struct pop_front_impl< aux::vector_tag<11> >
61 {
62     template< typename Vector > struct apply
63     {
64         typedef vector10<
65               typename Vector::item1, typename Vector::item2
66             , typename Vector::item3, typename Vector::item4
67             , typename Vector::item5, typename Vector::item6
68             , typename Vector::item7, typename Vector::item8
69             , typename Vector::item9, typename Vector::item10
70             > type;
71     };
72 };
73
74 template<>
75 struct push_back_impl< aux::vector_tag<10> >
76 {
77     template< typename Vector, typename T > struct apply
78     {
79         typedef vector11<
80               typename Vector::item0, typename Vector::item1
81             , typename Vector::item2, typename Vector::item3
82             , typename Vector::item4, typename Vector::item5
83             , typename Vector::item6, typename Vector::item7
84             , typename Vector::item8, typename Vector::item9
85               ,
86               T
87             > type;
88     };
89 };
90
91 template<>
92 struct pop_back_impl< aux::vector_tag<11> >
93 {
94     template< typename Vector > struct apply
95     {
96         typedef vector10<
97               typename Vector::item0, typename Vector::item1
98             , typename Vector::item2, typename Vector::item3
99             , typename Vector::item4, typename Vector::item5
100             , typename Vector::item6, typename Vector::item7
101             , typename Vector::item8, typename Vector::item9
102             > type;
103     };
104 };
105
106 template< typename V >
107 struct v_at< V,11 >
108 {
109     typedef typename V::item11 type;
110 };
111
112 template<
113       typename T0, typename T1, typename T2, typename T3, typename T4
114     , typename T5, typename T6, typename T7, typename T8, typename T9
115     , typename T10, typename T11
116     >
117 struct vector12
118 {
119     typedef aux::vector_tag<12> tag;
120     typedef vector12 type;
121     typedef T0 item0;
122     typedef T1 item1;
123     typedef T2 item2;
124     typedef T3 item3;
125     typedef T4 item4;
126     typedef T5 item5;
127     typedef T6 item6;
128     typedef T7 item7;
129     typedef T8 item8;
130     typedef T9 item9;
131     typedef T10 item10;
132     typedef T11 item11;
133     
134
135     typedef void_ item12;
136     typedef T11 back;
137     typedef v_iter< type,0 > begin;
138     typedef v_iter< type,12 > end;
139 };
140
141 template<>
142 struct push_front_impl< aux::vector_tag<11> >
143 {
144     template< typename Vector, typename T > struct apply
145     {
146         typedef vector12<
147               T
148               ,
149               typename Vector::item0, typename Vector::item1
150             , typename Vector::item2, typename Vector::item3
151             , typename Vector::item4, typename Vector::item5
152             , typename Vector::item6, typename Vector::item7
153             , typename Vector::item8, typename Vector::item9
154             , typename Vector::item10
155             > type;
156     };
157 };
158
159 template<>
160 struct pop_front_impl< aux::vector_tag<12> >
161 {
162     template< typename Vector > struct apply
163     {
164         typedef vector11<
165               typename Vector::item1, typename Vector::item2
166             , typename Vector::item3, typename Vector::item4
167             , typename Vector::item5, typename Vector::item6
168             , typename Vector::item7, typename Vector::item8
169             , typename Vector::item9, typename Vector::item10
170             , typename Vector::item11
171             > type;
172     };
173 };
174
175 template<>
176 struct push_back_impl< aux::vector_tag<11> >
177 {
178     template< typename Vector, typename T > struct apply
179     {
180         typedef vector12<
181               typename Vector::item0, typename Vector::item1
182             , typename Vector::item2, typename Vector::item3
183             , typename Vector::item4, typename Vector::item5
184             , typename Vector::item6, typename Vector::item7
185             , typename Vector::item8, typename Vector::item9
186             , typename Vector::item10
187               ,
188               T
189             > type;
190     };
191 };
192
193 template<>
194 struct pop_back_impl< aux::vector_tag<12> >
195 {
196     template< typename Vector > struct apply
197     {
198         typedef vector11<
199               typename Vector::item0, typename Vector::item1
200             , typename Vector::item2, typename Vector::item3
201             , typename Vector::item4, typename Vector::item5
202             , typename Vector::item6, typename Vector::item7
203             , typename Vector::item8, typename Vector::item9
204             , typename Vector::item10
205             > type;
206     };
207 };
208
209 template< typename V >
210 struct v_at< V,12 >
211 {
212     typedef typename V::item12 type;
213 };
214
215 template<
216       typename T0, typename T1, typename T2, typename T3, typename T4
217     , typename T5, typename T6, typename T7, typename T8, typename T9
218     , typename T10, typename T11, typename T12
219     >
220 struct vector13
221 {
222     typedef aux::vector_tag<13> tag;
223     typedef vector13 type;
224     typedef T0 item0;
225     typedef T1 item1;
226     typedef T2 item2;
227     typedef T3 item3;
228     typedef T4 item4;
229     typedef T5 item5;
230     typedef T6 item6;
231     typedef T7 item7;
232     typedef T8 item8;
233     typedef T9 item9;
234     typedef T10 item10;
235     typedef T11 item11;
236     typedef T12 item12;
237     
238
239     typedef void_ item13;
240     typedef T12 back;
241     typedef v_iter< type,0 > begin;
242     typedef v_iter< type,13 > end;
243 };
244
245 template<>
246 struct push_front_impl< aux::vector_tag<12> >
247 {
248     template< typename Vector, typename T > struct apply
249     {
250         typedef vector13<
251               T
252               ,
253               typename Vector::item0, typename Vector::item1
254             , typename Vector::item2, typename Vector::item3
255             , typename Vector::item4, typename Vector::item5
256             , typename Vector::item6, typename Vector::item7
257             , typename Vector::item8, typename Vector::item9
258             , typename Vector::item10, typename Vector::item11
259             > type;
260     };
261 };
262
263 template<>
264 struct pop_front_impl< aux::vector_tag<13> >
265 {
266     template< typename Vector > struct apply
267     {
268         typedef vector12<
269               typename Vector::item1, typename Vector::item2
270             , typename Vector::item3, typename Vector::item4
271             , typename Vector::item5, typename Vector::item6
272             , typename Vector::item7, typename Vector::item8
273             , typename Vector::item9, typename Vector::item10
274             , typename Vector::item11, typename Vector::item12
275             > type;
276     };
277 };
278
279 template<>
280 struct push_back_impl< aux::vector_tag<12> >
281 {
282     template< typename Vector, typename T > struct apply
283     {
284         typedef vector13<
285               typename Vector::item0, typename Vector::item1
286             , typename Vector::item2, typename Vector::item3
287             , typename Vector::item4, typename Vector::item5
288             , typename Vector::item6, typename Vector::item7
289             , typename Vector::item8, typename Vector::item9
290             , typename Vector::item10, typename Vector::item11
291               ,
292               T
293             > type;
294     };
295 };
296
297 template<>
298 struct pop_back_impl< aux::vector_tag<13> >
299 {
300     template< typename Vector > struct apply
301     {
302         typedef vector12<
303               typename Vector::item0, typename Vector::item1
304             , typename Vector::item2, typename Vector::item3
305             , typename Vector::item4, typename Vector::item5
306             , typename Vector::item6, typename Vector::item7
307             , typename Vector::item8, typename Vector::item9
308             , typename Vector::item10, typename Vector::item11
309             > type;
310     };
311 };
312
313 template< typename V >
314 struct v_at< V,13 >
315 {
316     typedef typename V::item13 type;
317 };
318
319 template<
320       typename T0, typename T1, typename T2, typename T3, typename T4
321     , typename T5, typename T6, typename T7, typename T8, typename T9
322     , typename T10, typename T11, typename T12, typename T13
323     >
324 struct vector14
325 {
326     typedef aux::vector_tag<14> tag;
327     typedef vector14 type;
328     typedef T0 item0;
329     typedef T1 item1;
330     typedef T2 item2;
331     typedef T3 item3;
332     typedef T4 item4;
333     typedef T5 item5;
334     typedef T6 item6;
335     typedef T7 item7;
336     typedef T8 item8;
337     typedef T9 item9;
338     typedef T10 item10;
339     typedef T11 item11;
340     typedef T12 item12;
341     typedef T13 item13;
342     
343
344     typedef void_ item14;
345     typedef T13 back;
346     typedef v_iter< type,0 > begin;
347     typedef v_iter< type,14 > end;
348 };
349
350 template<>
351 struct push_front_impl< aux::vector_tag<13> >
352 {
353     template< typename Vector, typename T > struct apply
354     {
355         typedef vector14<
356               T
357               ,
358               typename Vector::item0, typename Vector::item1
359             , typename Vector::item2, typename Vector::item3
360             , typename Vector::item4, typename Vector::item5
361             , typename Vector::item6, typename Vector::item7
362             , typename Vector::item8, typename Vector::item9
363             , typename Vector::item10, typename Vector::item11
364             , typename Vector::item12
365             > type;
366     };
367 };
368
369 template<>
370 struct pop_front_impl< aux::vector_tag<14> >
371 {
372     template< typename Vector > struct apply
373     {
374         typedef vector13<
375               typename Vector::item1, typename Vector::item2
376             , typename Vector::item3, typename Vector::item4
377             , typename Vector::item5, typename Vector::item6
378             , typename Vector::item7, typename Vector::item8
379             , typename Vector::item9, typename Vector::item10
380             , typename Vector::item11, typename Vector::item12
381             , typename Vector::item13
382             > type;
383     };
384 };
385
386 template<>
387 struct push_back_impl< aux::vector_tag<13> >
388 {
389     template< typename Vector, typename T > struct apply
390     {
391         typedef vector14<
392               typename Vector::item0, typename Vector::item1
393             , typename Vector::item2, typename Vector::item3
394             , typename Vector::item4, typename Vector::item5
395             , typename Vector::item6, typename Vector::item7
396             , typename Vector::item8, typename Vector::item9
397             , typename Vector::item10, typename Vector::item11
398             , typename Vector::item12
399               ,
400               T
401             > type;
402     };
403 };
404
405 template<>
406 struct pop_back_impl< aux::vector_tag<14> >
407 {
408     template< typename Vector > struct apply
409     {
410         typedef vector13<
411               typename Vector::item0, typename Vector::item1
412             , typename Vector::item2, typename Vector::item3
413             , typename Vector::item4, typename Vector::item5
414             , typename Vector::item6, typename Vector::item7
415             , typename Vector::item8, typename Vector::item9
416             , typename Vector::item10, typename Vector::item11
417             , typename Vector::item12
418             > type;
419     };
420 };
421
422 template< typename V >
423 struct v_at< V,14 >
424 {
425     typedef typename V::item14 type;
426 };
427
428 template<
429       typename T0, typename T1, typename T2, typename T3, typename T4
430     , typename T5, typename T6, typename T7, typename T8, typename T9
431     , typename T10, typename T11, typename T12, typename T13, typename T14
432     >
433 struct vector15
434 {
435     typedef aux::vector_tag<15> tag;
436     typedef vector15 type;
437     typedef T0 item0;
438     typedef T1 item1;
439     typedef T2 item2;
440     typedef T3 item3;
441     typedef T4 item4;
442     typedef T5 item5;
443     typedef T6 item6;
444     typedef T7 item7;
445     typedef T8 item8;
446     typedef T9 item9;
447     typedef T10 item10;
448     typedef T11 item11;
449     typedef T12 item12;
450     typedef T13 item13;
451     typedef T14 item14;
452     
453
454     typedef void_ item15;
455     typedef T14 back;
456     typedef v_iter< type,0 > begin;
457     typedef v_iter< type,15 > end;
458 };
459
460 template<>
461 struct push_front_impl< aux::vector_tag<14> >
462 {
463     template< typename Vector, typename T > struct apply
464     {
465         typedef vector15<
466               T
467               ,
468               typename Vector::item0, typename Vector::item1
469             , typename Vector::item2, typename Vector::item3
470             , typename Vector::item4, typename Vector::item5
471             , typename Vector::item6, typename Vector::item7
472             , typename Vector::item8, typename Vector::item9
473             , typename Vector::item10, typename Vector::item11
474             , typename Vector::item12, typename Vector::item13
475             > type;
476     };
477 };
478
479 template<>
480 struct pop_front_impl< aux::vector_tag<15> >
481 {
482     template< typename Vector > struct apply
483     {
484         typedef vector14<
485               typename Vector::item1, typename Vector::item2
486             , typename Vector::item3, typename Vector::item4
487             , typename Vector::item5, typename Vector::item6
488             , typename Vector::item7, typename Vector::item8
489             , typename Vector::item9, typename Vector::item10
490             , typename Vector::item11, typename Vector::item12
491             , typename Vector::item13, typename Vector::item14
492             > type;
493     };
494 };
495
496 template<>
497 struct push_back_impl< aux::vector_tag<14> >
498 {
499     template< typename Vector, typename T > struct apply
500     {
501         typedef vector15<
502               typename Vector::item0, typename Vector::item1
503             , typename Vector::item2, typename Vector::item3
504             , typename Vector::item4, typename Vector::item5
505             , typename Vector::item6, typename Vector::item7
506             , typename Vector::item8, typename Vector::item9
507             , typename Vector::item10, typename Vector::item11
508             , typename Vector::item12, typename Vector::item13
509               ,
510               T
511             > type;
512     };
513 };
514
515 template<>
516 struct pop_back_impl< aux::vector_tag<15> >
517 {
518     template< typename Vector > struct apply
519     {
520         typedef vector14<
521               typename Vector::item0, typename Vector::item1
522             , typename Vector::item2, typename Vector::item3
523             , typename Vector::item4, typename Vector::item5
524             , typename Vector::item6, typename Vector::item7
525             , typename Vector::item8, typename Vector::item9
526             , typename Vector::item10, typename Vector::item11
527             , typename Vector::item12, typename Vector::item13
528             > type;
529     };
530 };
531
532 template< typename V >
533 struct v_at< V,15 >
534 {
535     typedef typename V::item15 type;
536 };
537
538 template<
539       typename T0, typename T1, typename T2, typename T3, typename T4
540     , typename T5, typename T6, typename T7, typename T8, typename T9
541     , typename T10, typename T11, typename T12, typename T13, typename T14
542     , typename T15
543     >
544 struct vector16
545 {
546     typedef aux::vector_tag<16> tag;
547     typedef vector16 type;
548     typedef T0 item0;
549     typedef T1 item1;
550     typedef T2 item2;
551     typedef T3 item3;
552     typedef T4 item4;
553     typedef T5 item5;
554     typedef T6 item6;
555     typedef T7 item7;
556     typedef T8 item8;
557     typedef T9 item9;
558     typedef T10 item10;
559     typedef T11 item11;
560     typedef T12 item12;
561     typedef T13 item13;
562     typedef T14 item14;
563     typedef T15 item15;
564     
565
566     typedef void_ item16;
567     typedef T15 back;
568     typedef v_iter< type,0 > begin;
569     typedef v_iter< type,16 > end;
570 };
571
572 template<>
573 struct push_front_impl< aux::vector_tag<15> >
574 {
575     template< typename Vector, typename T > struct apply
576     {
577         typedef vector16<
578               T
579               ,
580               typename Vector::item0, typename Vector::item1
581             , typename Vector::item2, typename Vector::item3
582             , typename Vector::item4, typename Vector::item5
583             , typename Vector::item6, typename Vector::item7
584             , typename Vector::item8, typename Vector::item9
585             , typename Vector::item10, typename Vector::item11
586             , typename Vector::item12, typename Vector::item13
587             , typename Vector::item14
588             > type;
589     };
590 };
591
592 template<>
593 struct pop_front_impl< aux::vector_tag<16> >
594 {
595     template< typename Vector > struct apply
596     {
597         typedef vector15<
598               typename Vector::item1, typename Vector::item2
599             , typename Vector::item3, typename Vector::item4
600             , typename Vector::item5, typename Vector::item6
601             , typename Vector::item7, typename Vector::item8
602             , typename Vector::item9, typename Vector::item10
603             , typename Vector::item11, typename Vector::item12
604             , typename Vector::item13, typename Vector::item14
605             , typename Vector::item15
606             > type;
607     };
608 };
609
610 template<>
611 struct push_back_impl< aux::vector_tag<15> >
612 {
613     template< typename Vector, typename T > struct apply
614     {
615         typedef vector16<
616               typename Vector::item0, typename Vector::item1
617             , typename Vector::item2, typename Vector::item3
618             , typename Vector::item4, typename Vector::item5
619             , typename Vector::item6, typename Vector::item7
620             , typename Vector::item8, typename Vector::item9
621             , typename Vector::item10, typename Vector::item11
622             , typename Vector::item12, typename Vector::item13
623             , typename Vector::item14
624               ,
625               T
626             > type;
627     };
628 };
629
630 template<>
631 struct pop_back_impl< aux::vector_tag<16> >
632 {
633     template< typename Vector > struct apply
634     {
635         typedef vector15<
636               typename Vector::item0, typename Vector::item1
637             , typename Vector::item2, typename Vector::item3
638             , typename Vector::item4, typename Vector::item5
639             , typename Vector::item6, typename Vector::item7
640             , typename Vector::item8, typename Vector::item9
641             , typename Vector::item10, typename Vector::item11
642             , typename Vector::item12, typename Vector::item13
643             , typename Vector::item14
644             > type;
645     };
646 };
647
648 template< typename V >
649 struct v_at< V,16 >
650 {
651     typedef typename V::item16 type;
652 };
653
654 template<
655       typename T0, typename T1, typename T2, typename T3, typename T4
656     , typename T5, typename T6, typename T7, typename T8, typename T9
657     , typename T10, typename T11, typename T12, typename T13, typename T14
658     , typename T15, typename T16
659     >
660 struct vector17
661 {
662     typedef aux::vector_tag<17> tag;
663     typedef vector17 type;
664     typedef T0 item0;
665     typedef T1 item1;
666     typedef T2 item2;
667     typedef T3 item3;
668     typedef T4 item4;
669     typedef T5 item5;
670     typedef T6 item6;
671     typedef T7 item7;
672     typedef T8 item8;
673     typedef T9 item9;
674     typedef T10 item10;
675     typedef T11 item11;
676     typedef T12 item12;
677     typedef T13 item13;
678     typedef T14 item14;
679     typedef T15 item15;
680     typedef T16 item16;
681     
682
683     typedef void_ item17;
684     typedef T16 back;
685     typedef v_iter< type,0 > begin;
686     typedef v_iter< type,17 > end;
687 };
688
689 template<>
690 struct push_front_impl< aux::vector_tag<16> >
691 {
692     template< typename Vector, typename T > struct apply
693     {
694         typedef vector17<
695               T
696               ,
697               typename Vector::item0, typename Vector::item1
698             , typename Vector::item2, typename Vector::item3
699             , typename Vector::item4, typename Vector::item5
700             , typename Vector::item6, typename Vector::item7
701             , typename Vector::item8, typename Vector::item9
702             , typename Vector::item10, typename Vector::item11
703             , typename Vector::item12, typename Vector::item13
704             , typename Vector::item14, typename Vector::item15
705             > type;
706     };
707 };
708
709 template<>
710 struct pop_front_impl< aux::vector_tag<17> >
711 {
712     template< typename Vector > struct apply
713     {
714         typedef vector16<
715               typename Vector::item1, typename Vector::item2
716             , typename Vector::item3, typename Vector::item4
717             , typename Vector::item5, typename Vector::item6
718             , typename Vector::item7, typename Vector::item8
719             , typename Vector::item9, typename Vector::item10
720             , typename Vector::item11, typename Vector::item12
721             , typename Vector::item13, typename Vector::item14
722             , typename Vector::item15, typename Vector::item16
723             > type;
724     };
725 };
726
727 template<>
728 struct push_back_impl< aux::vector_tag<16> >
729 {
730     template< typename Vector, typename T > struct apply
731     {
732         typedef vector17<
733               typename Vector::item0, typename Vector::item1
734             , typename Vector::item2, typename Vector::item3
735             , typename Vector::item4, typename Vector::item5
736             , typename Vector::item6, typename Vector::item7
737             , typename Vector::item8, typename Vector::item9
738             , typename Vector::item10, typename Vector::item11
739             , typename Vector::item12, typename Vector::item13
740             , typename Vector::item14, typename Vector::item15
741               ,
742               T
743             > type;
744     };
745 };
746
747 template<>
748 struct pop_back_impl< aux::vector_tag<17> >
749 {
750     template< typename Vector > struct apply
751     {
752         typedef vector16<
753               typename Vector::item0, typename Vector::item1
754             , typename Vector::item2, typename Vector::item3
755             , typename Vector::item4, typename Vector::item5
756             , typename Vector::item6, typename Vector::item7
757             , typename Vector::item8, typename Vector::item9
758             , typename Vector::item10, typename Vector::item11
759             , typename Vector::item12, typename Vector::item13
760             , typename Vector::item14, typename Vector::item15
761             > type;
762     };
763 };
764
765 template< typename V >
766 struct v_at< V,17 >
767 {
768     typedef typename V::item17 type;
769 };
770
771 template<
772       typename T0, typename T1, typename T2, typename T3, typename T4
773     , typename T5, typename T6, typename T7, typename T8, typename T9
774     , typename T10, typename T11, typename T12, typename T13, typename T14
775     , typename T15, typename T16, typename T17
776     >
777 struct vector18
778 {
779     typedef aux::vector_tag<18> tag;
780     typedef vector18 type;
781     typedef T0 item0;
782     typedef T1 item1;
783     typedef T2 item2;
784     typedef T3 item3;
785     typedef T4 item4;
786     typedef T5 item5;
787     typedef T6 item6;
788     typedef T7 item7;
789     typedef T8 item8;
790     typedef T9 item9;
791     typedef T10 item10;
792     typedef T11 item11;
793     typedef T12 item12;
794     typedef T13 item13;
795     typedef T14 item14;
796     typedef T15 item15;
797     typedef T16 item16;
798     typedef T17 item17;
799     
800
801     typedef void_ item18;
802     typedef T17 back;
803     typedef v_iter< type,0 > begin;
804     typedef v_iter< type,18 > end;
805 };
806
807 template<>
808 struct push_front_impl< aux::vector_tag<17> >
809 {
810     template< typename Vector, typename T > struct apply
811     {
812         typedef vector18<
813               T
814               ,
815               typename Vector::item0, typename Vector::item1
816             , typename Vector::item2, typename Vector::item3
817             , typename Vector::item4, typename Vector::item5
818             , typename Vector::item6, typename Vector::item7
819             , typename Vector::item8, typename Vector::item9
820             , typename Vector::item10, typename Vector::item11
821             , typename Vector::item12, typename Vector::item13
822             , typename Vector::item14, typename Vector::item15
823             , typename Vector::item16
824             > type;
825     };
826 };
827
828 template<>
829 struct pop_front_impl< aux::vector_tag<18> >
830 {
831     template< typename Vector > struct apply
832     {
833         typedef vector17<
834               typename Vector::item1, typename Vector::item2
835             , typename Vector::item3, typename Vector::item4
836             , typename Vector::item5, typename Vector::item6
837             , typename Vector::item7, typename Vector::item8
838             , typename Vector::item9, typename Vector::item10
839             , typename Vector::item11, typename Vector::item12
840             , typename Vector::item13, typename Vector::item14
841             , typename Vector::item15, typename Vector::item16
842             , typename Vector::item17
843             > type;
844     };
845 };
846
847 template<>
848 struct push_back_impl< aux::vector_tag<17> >
849 {
850     template< typename Vector, typename T > struct apply
851     {
852         typedef vector18<
853               typename Vector::item0, typename Vector::item1
854             , typename Vector::item2, typename Vector::item3
855             , typename Vector::item4, typename Vector::item5
856             , typename Vector::item6, typename Vector::item7
857             , typename Vector::item8, typename Vector::item9
858             , typename Vector::item10, typename Vector::item11
859             , typename Vector::item12, typename Vector::item13
860             , typename Vector::item14, typename Vector::item15
861             , typename Vector::item16
862               ,
863               T
864             > type;
865     };
866 };
867
868 template<>
869 struct pop_back_impl< aux::vector_tag<18> >
870 {
871     template< typename Vector > struct apply
872     {
873         typedef vector17<
874               typename Vector::item0, typename Vector::item1
875             , typename Vector::item2, typename Vector::item3
876             , typename Vector::item4, typename Vector::item5
877             , typename Vector::item6, typename Vector::item7
878             , typename Vector::item8, typename Vector::item9
879             , typename Vector::item10, typename Vector::item11
880             , typename Vector::item12, typename Vector::item13
881             , typename Vector::item14, typename Vector::item15
882             , typename Vector::item16
883             > type;
884     };
885 };
886
887 template< typename V >
888 struct v_at< V,18 >
889 {
890     typedef typename V::item18 type;
891 };
892
893 template<
894       typename T0, typename T1, typename T2, typename T3, typename T4
895     , typename T5, typename T6, typename T7, typename T8, typename T9
896     , typename T10, typename T11, typename T12, typename T13, typename T14
897     , typename T15, typename T16, typename T17, typename T18
898     >
899 struct vector19
900 {
901     typedef aux::vector_tag<19> tag;
902     typedef vector19 type;
903     typedef T0 item0;
904     typedef T1 item1;
905     typedef T2 item2;
906     typedef T3 item3;
907     typedef T4 item4;
908     typedef T5 item5;
909     typedef T6 item6;
910     typedef T7 item7;
911     typedef T8 item8;
912     typedef T9 item9;
913     typedef T10 item10;
914     typedef T11 item11;
915     typedef T12 item12;
916     typedef T13 item13;
917     typedef T14 item14;
918     typedef T15 item15;
919     typedef T16 item16;
920     typedef T17 item17;
921     typedef T18 item18;
922     
923
924     typedef void_ item19;
925     typedef T18 back;
926     typedef v_iter< type,0 > begin;
927     typedef v_iter< type,19 > end;
928 };
929
930 template<>
931 struct push_front_impl< aux::vector_tag<18> >
932 {
933     template< typename Vector, typename T > struct apply
934     {
935         typedef vector19<
936               T
937               ,
938               typename Vector::item0, typename Vector::item1
939             , typename Vector::item2, typename Vector::item3
940             , typename Vector::item4, typename Vector::item5
941             , typename Vector::item6, typename Vector::item7
942             , typename Vector::item8, typename Vector::item9
943             , typename Vector::item10, typename Vector::item11
944             , typename Vector::item12, typename Vector::item13
945             , typename Vector::item14, typename Vector::item15
946             , typename Vector::item16, typename Vector::item17
947             > type;
948     };
949 };
950
951 template<>
952 struct pop_front_impl< aux::vector_tag<19> >
953 {
954     template< typename Vector > struct apply
955     {
956         typedef vector18<
957               typename Vector::item1, typename Vector::item2
958             , typename Vector::item3, typename Vector::item4
959             , typename Vector::item5, typename Vector::item6
960             , typename Vector::item7, typename Vector::item8
961             , typename Vector::item9, typename Vector::item10
962             , typename Vector::item11, typename Vector::item12
963             , typename Vector::item13, typename Vector::item14
964             , typename Vector::item15, typename Vector::item16
965             , typename Vector::item17, typename Vector::item18
966             > type;
967     };
968 };
969
970 template<>
971 struct push_back_impl< aux::vector_tag<18> >
972 {
973     template< typename Vector, typename T > struct apply
974     {
975         typedef vector19<
976               typename Vector::item0, typename Vector::item1
977             , typename Vector::item2, typename Vector::item3
978             , typename Vector::item4, typename Vector::item5
979             , typename Vector::item6, typename Vector::item7
980             , typename Vector::item8, typename Vector::item9
981             , typename Vector::item10, typename Vector::item11
982             , typename Vector::item12, typename Vector::item13
983             , typename Vector::item14, typename Vector::item15
984             , typename Vector::item16, typename Vector::item17
985               ,
986               T
987             > type;
988     };
989 };
990
991 template<>
992 struct pop_back_impl< aux::vector_tag<19> >
993 {
994     template< typename Vector > struct apply
995     {
996         typedef vector18<
997               typename Vector::item0, typename Vector::item1
998             , typename Vector::item2, typename Vector::item3
999             , typename Vector::item4, typename Vector::item5
1000             , typename Vector::item6, typename Vector::item7
1001             , typename Vector::item8, typename Vector::item9
1002             , typename Vector::item10, typename Vector::item11
1003             , typename Vector::item12, typename Vector::item13
1004             , typename Vector::item14, typename Vector::item15
1005             , typename Vector::item16, typename Vector::item17
1006             > type;
1007     };
1008 };
1009
1010 template< typename V >
1011 struct v_at< V,19 >
1012 {
1013     typedef typename V::item19 type;
1014 };
1015
1016 template<
1017       typename T0, typename T1, typename T2, typename T3, typename T4
1018     , typename T5, typename T6, typename T7, typename T8, typename T9
1019     , typename T10, typename T11, typename T12, typename T13, typename T14
1020     , typename T15, typename T16, typename T17, typename T18, typename T19
1021     >
1022 struct vector20
1023 {
1024     typedef aux::vector_tag<20> tag;
1025     typedef vector20 type;
1026     typedef T0 item0;
1027     typedef T1 item1;
1028     typedef T2 item2;
1029     typedef T3 item3;
1030     typedef T4 item4;
1031     typedef T5 item5;
1032     typedef T6 item6;
1033     typedef T7 item7;
1034     typedef T8 item8;
1035     typedef T9 item9;
1036     typedef T10 item10;
1037     typedef T11 item11;
1038     typedef T12 item12;
1039     typedef T13 item13;
1040     typedef T14 item14;
1041     typedef T15 item15;
1042     typedef T16 item16;
1043     typedef T17 item17;
1044     typedef T18 item18;
1045     typedef T19 item19;
1046     
1047
1048     typedef void_ item20;
1049     typedef T19 back;
1050     typedef v_iter< type,0 > begin;
1051     typedef v_iter< type,20 > end;
1052 };
1053
1054 template<>
1055 struct push_front_impl< aux::vector_tag<19> >
1056 {
1057     template< typename Vector, typename T > struct apply
1058     {
1059         typedef vector20<
1060               T
1061               ,
1062               typename Vector::item0, typename Vector::item1
1063             , typename Vector::item2, typename Vector::item3
1064             , typename Vector::item4, typename Vector::item5
1065             , typename Vector::item6, typename Vector::item7
1066             , typename Vector::item8, typename Vector::item9
1067             , typename Vector::item10, typename Vector::item11
1068             , typename Vector::item12, typename Vector::item13
1069             , typename Vector::item14, typename Vector::item15
1070             , typename Vector::item16, typename Vector::item17
1071             , typename Vector::item18
1072             > type;
1073     };
1074 };
1075
1076 template<>
1077 struct pop_front_impl< aux::vector_tag<20> >
1078 {
1079     template< typename Vector > struct apply
1080     {
1081         typedef vector19<
1082               typename Vector::item1, typename Vector::item2
1083             , typename Vector::item3, typename Vector::item4
1084             , typename Vector::item5, typename Vector::item6
1085             , typename Vector::item7, typename Vector::item8
1086             , typename Vector::item9, typename Vector::item10
1087             , typename Vector::item11, typename Vector::item12
1088             , typename Vector::item13, typename Vector::item14
1089             , typename Vector::item15, typename Vector::item16
1090             , typename Vector::item17, typename Vector::item18
1091             , typename Vector::item19
1092             > type;
1093     };
1094 };
1095
1096 template<>
1097 struct push_back_impl< aux::vector_tag<19> >
1098 {
1099     template< typename Vector, typename T > struct apply
1100     {
1101         typedef vector20<
1102               typename Vector::item0, typename Vector::item1
1103             , typename Vector::item2, typename Vector::item3
1104             , typename Vector::item4, typename Vector::item5
1105             , typename Vector::item6, typename Vector::item7
1106             , typename Vector::item8, typename Vector::item9
1107             , typename Vector::item10, typename Vector::item11
1108             , typename Vector::item12, typename Vector::item13
1109             , typename Vector::item14, typename Vector::item15
1110             , typename Vector::item16, typename Vector::item17
1111             , typename Vector::item18
1112               ,
1113               T
1114             > type;
1115     };
1116 };
1117
1118 template<>
1119 struct pop_back_impl< aux::vector_tag<20> >
1120 {
1121     template< typename Vector > struct apply
1122     {
1123         typedef vector19<
1124               typename Vector::item0, typename Vector::item1
1125             , typename Vector::item2, typename Vector::item3
1126             , typename Vector::item4, typename Vector::item5
1127             , typename Vector::item6, typename Vector::item7
1128             , typename Vector::item8, typename Vector::item9
1129             , typename Vector::item10, typename Vector::item11
1130             , typename Vector::item12, typename Vector::item13
1131             , typename Vector::item14, typename Vector::item15
1132             , typename Vector::item16, typename Vector::item17
1133             , typename Vector::item18
1134             > type;
1135     };
1136 };
1137
1138 template< typename V >
1139 struct v_at< V,20 >
1140 {
1141     typedef typename V::item20 type;
1142 };
1143
1144 }}