]> git.donarmstrong.com Git - rsem.git/blob - boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp
RSEM Source Codes
[rsem.git] / boost / mpl / vector / aux_ / preprocessed / no_ctps / 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 namespace aux {
107 template<> struct v_at_impl<11>
108 {
109     template< typename V_ > struct result_
110     {
111         typedef typename V_::item11 type;
112     };
113 };
114
115 }
116
117 template<>
118 struct at_impl< aux::vector_tag<11> >
119 {
120     template< typename V_, typename N > struct apply
121     {
122         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
123             ::template result_<V_>::type type;
124     };
125 };
126
127 template<>
128 struct front_impl< aux::vector_tag<11> >
129 {
130     template< typename Vector > struct apply
131     {
132         typedef typename Vector::item0 type;
133     };
134 };
135
136 template<>
137 struct back_impl< aux::vector_tag<11> >
138 {
139     template< typename Vector > struct apply
140     {
141         typedef typename Vector::back type;
142     };
143 };
144
145 template<>
146 struct empty_impl< aux::vector_tag<11> >
147 {
148     template< typename Vector > struct apply
149         : false_
150     {
151     };
152 };
153
154 template<>
155 struct size_impl< aux::vector_tag<11> >
156 {
157     template< typename Vector > struct apply
158         : long_<11>
159     {
160     };
161 };
162
163 template<>
164 struct O1_size_impl< aux::vector_tag<11> >
165     : size_impl< aux::vector_tag<11> >
166 {
167 };
168
169 template<>
170 struct clear_impl< aux::vector_tag<11> >
171 {
172     template< typename Vector > struct apply
173     {
174         typedef vector0<> type;
175     };
176 };
177
178 template<
179       typename T0, typename T1, typename T2, typename T3, typename T4
180     , typename T5, typename T6, typename T7, typename T8, typename T9
181     , typename T10, typename T11
182     >
183 struct vector12
184 {
185     typedef aux::vector_tag<12> tag;
186     typedef vector12 type;
187     typedef T0 item0;
188     typedef T1 item1;
189     typedef T2 item2;
190     typedef T3 item3;
191     typedef T4 item4;
192     typedef T5 item5;
193     typedef T6 item6;
194     typedef T7 item7;
195     typedef T8 item8;
196     typedef T9 item9;
197     typedef T10 item10;
198     typedef T11 item11;
199     
200
201     typedef void_ item12;
202     typedef T11 back;
203     typedef v_iter< type,0 > begin;
204     typedef v_iter< type,12 > end;
205 };
206
207 template<>
208 struct push_front_impl< aux::vector_tag<11> >
209 {
210     template< typename Vector, typename T > struct apply
211     {
212         typedef vector12<
213               T
214               ,
215               typename Vector::item0, typename Vector::item1
216             , typename Vector::item2, typename Vector::item3
217             , typename Vector::item4, typename Vector::item5
218             , typename Vector::item6, typename Vector::item7
219             , typename Vector::item8, typename Vector::item9
220             , typename Vector::item10
221             > type;
222     };
223 };
224
225 template<>
226 struct pop_front_impl< aux::vector_tag<12> >
227 {
228     template< typename Vector > struct apply
229     {
230         typedef vector11<
231               typename Vector::item1, typename Vector::item2
232             , typename Vector::item3, typename Vector::item4
233             , typename Vector::item5, typename Vector::item6
234             , typename Vector::item7, typename Vector::item8
235             , typename Vector::item9, typename Vector::item10
236             , typename Vector::item11
237             > type;
238     };
239 };
240
241 template<>
242 struct push_back_impl< aux::vector_tag<11> >
243 {
244     template< typename Vector, typename T > struct apply
245     {
246         typedef vector12<
247               typename Vector::item0, typename Vector::item1
248             , typename Vector::item2, typename Vector::item3
249             , typename Vector::item4, typename Vector::item5
250             , typename Vector::item6, typename Vector::item7
251             , typename Vector::item8, typename Vector::item9
252             , typename Vector::item10
253               ,
254               T
255             > type;
256     };
257 };
258
259 template<>
260 struct pop_back_impl< aux::vector_tag<12> >
261 {
262     template< typename Vector > struct apply
263     {
264         typedef vector11<
265               typename Vector::item0, typename Vector::item1
266             , typename Vector::item2, typename Vector::item3
267             , typename Vector::item4, typename Vector::item5
268             , typename Vector::item6, typename Vector::item7
269             , typename Vector::item8, typename Vector::item9
270             , typename Vector::item10
271             > type;
272     };
273 };
274
275 namespace aux {
276 template<> struct v_at_impl<12>
277 {
278     template< typename V_ > struct result_
279     {
280         typedef typename V_::item12 type;
281     };
282 };
283
284 }
285
286 template<>
287 struct at_impl< aux::vector_tag<12> >
288 {
289     template< typename V_, typename N > struct apply
290     {
291         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
292             ::template result_<V_>::type type;
293     };
294 };
295
296 template<>
297 struct front_impl< aux::vector_tag<12> >
298 {
299     template< typename Vector > struct apply
300     {
301         typedef typename Vector::item0 type;
302     };
303 };
304
305 template<>
306 struct back_impl< aux::vector_tag<12> >
307 {
308     template< typename Vector > struct apply
309     {
310         typedef typename Vector::back type;
311     };
312 };
313
314 template<>
315 struct empty_impl< aux::vector_tag<12> >
316 {
317     template< typename Vector > struct apply
318         : false_
319     {
320     };
321 };
322
323 template<>
324 struct size_impl< aux::vector_tag<12> >
325 {
326     template< typename Vector > struct apply
327         : long_<12>
328     {
329     };
330 };
331
332 template<>
333 struct O1_size_impl< aux::vector_tag<12> >
334     : size_impl< aux::vector_tag<12> >
335 {
336 };
337
338 template<>
339 struct clear_impl< aux::vector_tag<12> >
340 {
341     template< typename Vector > struct apply
342     {
343         typedef vector0<> type;
344     };
345 };
346
347 template<
348       typename T0, typename T1, typename T2, typename T3, typename T4
349     , typename T5, typename T6, typename T7, typename T8, typename T9
350     , typename T10, typename T11, typename T12
351     >
352 struct vector13
353 {
354     typedef aux::vector_tag<13> tag;
355     typedef vector13 type;
356     typedef T0 item0;
357     typedef T1 item1;
358     typedef T2 item2;
359     typedef T3 item3;
360     typedef T4 item4;
361     typedef T5 item5;
362     typedef T6 item6;
363     typedef T7 item7;
364     typedef T8 item8;
365     typedef T9 item9;
366     typedef T10 item10;
367     typedef T11 item11;
368     typedef T12 item12;
369     
370
371     typedef void_ item13;
372     typedef T12 back;
373     typedef v_iter< type,0 > begin;
374     typedef v_iter< type,13 > end;
375 };
376
377 template<>
378 struct push_front_impl< aux::vector_tag<12> >
379 {
380     template< typename Vector, typename T > struct apply
381     {
382         typedef vector13<
383               T
384               ,
385               typename Vector::item0, typename Vector::item1
386             , typename Vector::item2, typename Vector::item3
387             , typename Vector::item4, typename Vector::item5
388             , typename Vector::item6, typename Vector::item7
389             , typename Vector::item8, typename Vector::item9
390             , typename Vector::item10, typename Vector::item11
391             > type;
392     };
393 };
394
395 template<>
396 struct pop_front_impl< aux::vector_tag<13> >
397 {
398     template< typename Vector > struct apply
399     {
400         typedef vector12<
401               typename Vector::item1, typename Vector::item2
402             , typename Vector::item3, typename Vector::item4
403             , typename Vector::item5, typename Vector::item6
404             , typename Vector::item7, typename Vector::item8
405             , typename Vector::item9, typename Vector::item10
406             , typename Vector::item11, typename Vector::item12
407             > type;
408     };
409 };
410
411 template<>
412 struct push_back_impl< aux::vector_tag<12> >
413 {
414     template< typename Vector, typename T > struct apply
415     {
416         typedef vector13<
417               typename Vector::item0, typename Vector::item1
418             , typename Vector::item2, typename Vector::item3
419             , typename Vector::item4, typename Vector::item5
420             , typename Vector::item6, typename Vector::item7
421             , typename Vector::item8, typename Vector::item9
422             , typename Vector::item10, typename Vector::item11
423               ,
424               T
425             > type;
426     };
427 };
428
429 template<>
430 struct pop_back_impl< aux::vector_tag<13> >
431 {
432     template< typename Vector > struct apply
433     {
434         typedef vector12<
435               typename Vector::item0, typename Vector::item1
436             , typename Vector::item2, typename Vector::item3
437             , typename Vector::item4, typename Vector::item5
438             , typename Vector::item6, typename Vector::item7
439             , typename Vector::item8, typename Vector::item9
440             , typename Vector::item10, typename Vector::item11
441             > type;
442     };
443 };
444
445 namespace aux {
446 template<> struct v_at_impl<13>
447 {
448     template< typename V_ > struct result_
449     {
450         typedef typename V_::item13 type;
451     };
452 };
453
454 }
455
456 template<>
457 struct at_impl< aux::vector_tag<13> >
458 {
459     template< typename V_, typename N > struct apply
460     {
461         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
462             ::template result_<V_>::type type;
463     };
464 };
465
466 template<>
467 struct front_impl< aux::vector_tag<13> >
468 {
469     template< typename Vector > struct apply
470     {
471         typedef typename Vector::item0 type;
472     };
473 };
474
475 template<>
476 struct back_impl< aux::vector_tag<13> >
477 {
478     template< typename Vector > struct apply
479     {
480         typedef typename Vector::back type;
481     };
482 };
483
484 template<>
485 struct empty_impl< aux::vector_tag<13> >
486 {
487     template< typename Vector > struct apply
488         : false_
489     {
490     };
491 };
492
493 template<>
494 struct size_impl< aux::vector_tag<13> >
495 {
496     template< typename Vector > struct apply
497         : long_<13>
498     {
499     };
500 };
501
502 template<>
503 struct O1_size_impl< aux::vector_tag<13> >
504     : size_impl< aux::vector_tag<13> >
505 {
506 };
507
508 template<>
509 struct clear_impl< aux::vector_tag<13> >
510 {
511     template< typename Vector > struct apply
512     {
513         typedef vector0<> type;
514     };
515 };
516
517 template<
518       typename T0, typename T1, typename T2, typename T3, typename T4
519     , typename T5, typename T6, typename T7, typename T8, typename T9
520     , typename T10, typename T11, typename T12, typename T13
521     >
522 struct vector14
523 {
524     typedef aux::vector_tag<14> tag;
525     typedef vector14 type;
526     typedef T0 item0;
527     typedef T1 item1;
528     typedef T2 item2;
529     typedef T3 item3;
530     typedef T4 item4;
531     typedef T5 item5;
532     typedef T6 item6;
533     typedef T7 item7;
534     typedef T8 item8;
535     typedef T9 item9;
536     typedef T10 item10;
537     typedef T11 item11;
538     typedef T12 item12;
539     typedef T13 item13;
540     
541
542     typedef void_ item14;
543     typedef T13 back;
544     typedef v_iter< type,0 > begin;
545     typedef v_iter< type,14 > end;
546 };
547
548 template<>
549 struct push_front_impl< aux::vector_tag<13> >
550 {
551     template< typename Vector, typename T > struct apply
552     {
553         typedef vector14<
554               T
555               ,
556               typename Vector::item0, typename Vector::item1
557             , typename Vector::item2, typename Vector::item3
558             , typename Vector::item4, typename Vector::item5
559             , typename Vector::item6, typename Vector::item7
560             , typename Vector::item8, typename Vector::item9
561             , typename Vector::item10, typename Vector::item11
562             , typename Vector::item12
563             > type;
564     };
565 };
566
567 template<>
568 struct pop_front_impl< aux::vector_tag<14> >
569 {
570     template< typename Vector > struct apply
571     {
572         typedef vector13<
573               typename Vector::item1, typename Vector::item2
574             , typename Vector::item3, typename Vector::item4
575             , typename Vector::item5, typename Vector::item6
576             , typename Vector::item7, typename Vector::item8
577             , typename Vector::item9, typename Vector::item10
578             , typename Vector::item11, typename Vector::item12
579             , typename Vector::item13
580             > type;
581     };
582 };
583
584 template<>
585 struct push_back_impl< aux::vector_tag<13> >
586 {
587     template< typename Vector, typename T > struct apply
588     {
589         typedef vector14<
590               typename Vector::item0, typename Vector::item1
591             , typename Vector::item2, typename Vector::item3
592             , typename Vector::item4, typename Vector::item5
593             , typename Vector::item6, typename Vector::item7
594             , typename Vector::item8, typename Vector::item9
595             , typename Vector::item10, typename Vector::item11
596             , typename Vector::item12
597               ,
598               T
599             > type;
600     };
601 };
602
603 template<>
604 struct pop_back_impl< aux::vector_tag<14> >
605 {
606     template< typename Vector > struct apply
607     {
608         typedef vector13<
609               typename Vector::item0, typename Vector::item1
610             , typename Vector::item2, typename Vector::item3
611             , typename Vector::item4, typename Vector::item5
612             , typename Vector::item6, typename Vector::item7
613             , typename Vector::item8, typename Vector::item9
614             , typename Vector::item10, typename Vector::item11
615             , typename Vector::item12
616             > type;
617     };
618 };
619
620 namespace aux {
621 template<> struct v_at_impl<14>
622 {
623     template< typename V_ > struct result_
624     {
625         typedef typename V_::item14 type;
626     };
627 };
628
629 }
630
631 template<>
632 struct at_impl< aux::vector_tag<14> >
633 {
634     template< typename V_, typename N > struct apply
635     {
636         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
637             ::template result_<V_>::type type;
638     };
639 };
640
641 template<>
642 struct front_impl< aux::vector_tag<14> >
643 {
644     template< typename Vector > struct apply
645     {
646         typedef typename Vector::item0 type;
647     };
648 };
649
650 template<>
651 struct back_impl< aux::vector_tag<14> >
652 {
653     template< typename Vector > struct apply
654     {
655         typedef typename Vector::back type;
656     };
657 };
658
659 template<>
660 struct empty_impl< aux::vector_tag<14> >
661 {
662     template< typename Vector > struct apply
663         : false_
664     {
665     };
666 };
667
668 template<>
669 struct size_impl< aux::vector_tag<14> >
670 {
671     template< typename Vector > struct apply
672         : long_<14>
673     {
674     };
675 };
676
677 template<>
678 struct O1_size_impl< aux::vector_tag<14> >
679     : size_impl< aux::vector_tag<14> >
680 {
681 };
682
683 template<>
684 struct clear_impl< aux::vector_tag<14> >
685 {
686     template< typename Vector > struct apply
687     {
688         typedef vector0<> type;
689     };
690 };
691
692 template<
693       typename T0, typename T1, typename T2, typename T3, typename T4
694     , typename T5, typename T6, typename T7, typename T8, typename T9
695     , typename T10, typename T11, typename T12, typename T13, typename T14
696     >
697 struct vector15
698 {
699     typedef aux::vector_tag<15> tag;
700     typedef vector15 type;
701     typedef T0 item0;
702     typedef T1 item1;
703     typedef T2 item2;
704     typedef T3 item3;
705     typedef T4 item4;
706     typedef T5 item5;
707     typedef T6 item6;
708     typedef T7 item7;
709     typedef T8 item8;
710     typedef T9 item9;
711     typedef T10 item10;
712     typedef T11 item11;
713     typedef T12 item12;
714     typedef T13 item13;
715     typedef T14 item14;
716     
717
718     typedef void_ item15;
719     typedef T14 back;
720     typedef v_iter< type,0 > begin;
721     typedef v_iter< type,15 > end;
722 };
723
724 template<>
725 struct push_front_impl< aux::vector_tag<14> >
726 {
727     template< typename Vector, typename T > struct apply
728     {
729         typedef vector15<
730               T
731               ,
732               typename Vector::item0, typename Vector::item1
733             , typename Vector::item2, typename Vector::item3
734             , typename Vector::item4, typename Vector::item5
735             , typename Vector::item6, typename Vector::item7
736             , typename Vector::item8, typename Vector::item9
737             , typename Vector::item10, typename Vector::item11
738             , typename Vector::item12, typename Vector::item13
739             > type;
740     };
741 };
742
743 template<>
744 struct pop_front_impl< aux::vector_tag<15> >
745 {
746     template< typename Vector > struct apply
747     {
748         typedef vector14<
749               typename Vector::item1, typename Vector::item2
750             , typename Vector::item3, typename Vector::item4
751             , typename Vector::item5, typename Vector::item6
752             , typename Vector::item7, typename Vector::item8
753             , typename Vector::item9, typename Vector::item10
754             , typename Vector::item11, typename Vector::item12
755             , typename Vector::item13, typename Vector::item14
756             > type;
757     };
758 };
759
760 template<>
761 struct push_back_impl< aux::vector_tag<14> >
762 {
763     template< typename Vector, typename T > struct apply
764     {
765         typedef vector15<
766               typename Vector::item0, typename Vector::item1
767             , typename Vector::item2, typename Vector::item3
768             , typename Vector::item4, typename Vector::item5
769             , typename Vector::item6, typename Vector::item7
770             , typename Vector::item8, typename Vector::item9
771             , typename Vector::item10, typename Vector::item11
772             , typename Vector::item12, typename Vector::item13
773               ,
774               T
775             > type;
776     };
777 };
778
779 template<>
780 struct pop_back_impl< aux::vector_tag<15> >
781 {
782     template< typename Vector > struct apply
783     {
784         typedef vector14<
785               typename Vector::item0, typename Vector::item1
786             , typename Vector::item2, typename Vector::item3
787             , typename Vector::item4, typename Vector::item5
788             , typename Vector::item6, typename Vector::item7
789             , typename Vector::item8, typename Vector::item9
790             , typename Vector::item10, typename Vector::item11
791             , typename Vector::item12, typename Vector::item13
792             > type;
793     };
794 };
795
796 namespace aux {
797 template<> struct v_at_impl<15>
798 {
799     template< typename V_ > struct result_
800     {
801         typedef typename V_::item15 type;
802     };
803 };
804
805 }
806
807 template<>
808 struct at_impl< aux::vector_tag<15> >
809 {
810     template< typename V_, typename N > struct apply
811     {
812         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
813             ::template result_<V_>::type type;
814     };
815 };
816
817 template<>
818 struct front_impl< aux::vector_tag<15> >
819 {
820     template< typename Vector > struct apply
821     {
822         typedef typename Vector::item0 type;
823     };
824 };
825
826 template<>
827 struct back_impl< aux::vector_tag<15> >
828 {
829     template< typename Vector > struct apply
830     {
831         typedef typename Vector::back type;
832     };
833 };
834
835 template<>
836 struct empty_impl< aux::vector_tag<15> >
837 {
838     template< typename Vector > struct apply
839         : false_
840     {
841     };
842 };
843
844 template<>
845 struct size_impl< aux::vector_tag<15> >
846 {
847     template< typename Vector > struct apply
848         : long_<15>
849     {
850     };
851 };
852
853 template<>
854 struct O1_size_impl< aux::vector_tag<15> >
855     : size_impl< aux::vector_tag<15> >
856 {
857 };
858
859 template<>
860 struct clear_impl< aux::vector_tag<15> >
861 {
862     template< typename Vector > struct apply
863     {
864         typedef vector0<> type;
865     };
866 };
867
868 template<
869       typename T0, typename T1, typename T2, typename T3, typename T4
870     , typename T5, typename T6, typename T7, typename T8, typename T9
871     , typename T10, typename T11, typename T12, typename T13, typename T14
872     , typename T15
873     >
874 struct vector16
875 {
876     typedef aux::vector_tag<16> tag;
877     typedef vector16 type;
878     typedef T0 item0;
879     typedef T1 item1;
880     typedef T2 item2;
881     typedef T3 item3;
882     typedef T4 item4;
883     typedef T5 item5;
884     typedef T6 item6;
885     typedef T7 item7;
886     typedef T8 item8;
887     typedef T9 item9;
888     typedef T10 item10;
889     typedef T11 item11;
890     typedef T12 item12;
891     typedef T13 item13;
892     typedef T14 item14;
893     typedef T15 item15;
894     
895
896     typedef void_ item16;
897     typedef T15 back;
898     typedef v_iter< type,0 > begin;
899     typedef v_iter< type,16 > end;
900 };
901
902 template<>
903 struct push_front_impl< aux::vector_tag<15> >
904 {
905     template< typename Vector, typename T > struct apply
906     {
907         typedef vector16<
908               T
909               ,
910               typename Vector::item0, typename Vector::item1
911             , typename Vector::item2, typename Vector::item3
912             , typename Vector::item4, typename Vector::item5
913             , typename Vector::item6, typename Vector::item7
914             , typename Vector::item8, typename Vector::item9
915             , typename Vector::item10, typename Vector::item11
916             , typename Vector::item12, typename Vector::item13
917             , typename Vector::item14
918             > type;
919     };
920 };
921
922 template<>
923 struct pop_front_impl< aux::vector_tag<16> >
924 {
925     template< typename Vector > struct apply
926     {
927         typedef vector15<
928               typename Vector::item1, typename Vector::item2
929             , typename Vector::item3, typename Vector::item4
930             , typename Vector::item5, typename Vector::item6
931             , typename Vector::item7, typename Vector::item8
932             , typename Vector::item9, typename Vector::item10
933             , typename Vector::item11, typename Vector::item12
934             , typename Vector::item13, typename Vector::item14
935             , typename Vector::item15
936             > type;
937     };
938 };
939
940 template<>
941 struct push_back_impl< aux::vector_tag<15> >
942 {
943     template< typename Vector, typename T > struct apply
944     {
945         typedef vector16<
946               typename Vector::item0, typename Vector::item1
947             , typename Vector::item2, typename Vector::item3
948             , typename Vector::item4, typename Vector::item5
949             , typename Vector::item6, typename Vector::item7
950             , typename Vector::item8, typename Vector::item9
951             , typename Vector::item10, typename Vector::item11
952             , typename Vector::item12, typename Vector::item13
953             , typename Vector::item14
954               ,
955               T
956             > type;
957     };
958 };
959
960 template<>
961 struct pop_back_impl< aux::vector_tag<16> >
962 {
963     template< typename Vector > struct apply
964     {
965         typedef vector15<
966               typename Vector::item0, typename Vector::item1
967             , typename Vector::item2, typename Vector::item3
968             , typename Vector::item4, typename Vector::item5
969             , typename Vector::item6, typename Vector::item7
970             , typename Vector::item8, typename Vector::item9
971             , typename Vector::item10, typename Vector::item11
972             , typename Vector::item12, typename Vector::item13
973             , typename Vector::item14
974             > type;
975     };
976 };
977
978 namespace aux {
979 template<> struct v_at_impl<16>
980 {
981     template< typename V_ > struct result_
982     {
983         typedef typename V_::item16 type;
984     };
985 };
986
987 }
988
989 template<>
990 struct at_impl< aux::vector_tag<16> >
991 {
992     template< typename V_, typename N > struct apply
993     {
994         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
995             ::template result_<V_>::type type;
996     };
997 };
998
999 template<>
1000 struct front_impl< aux::vector_tag<16> >
1001 {
1002     template< typename Vector > struct apply
1003     {
1004         typedef typename Vector::item0 type;
1005     };
1006 };
1007
1008 template<>
1009 struct back_impl< aux::vector_tag<16> >
1010 {
1011     template< typename Vector > struct apply
1012     {
1013         typedef typename Vector::back type;
1014     };
1015 };
1016
1017 template<>
1018 struct empty_impl< aux::vector_tag<16> >
1019 {
1020     template< typename Vector > struct apply
1021         : false_
1022     {
1023     };
1024 };
1025
1026 template<>
1027 struct size_impl< aux::vector_tag<16> >
1028 {
1029     template< typename Vector > struct apply
1030         : long_<16>
1031     {
1032     };
1033 };
1034
1035 template<>
1036 struct O1_size_impl< aux::vector_tag<16> >
1037     : size_impl< aux::vector_tag<16> >
1038 {
1039 };
1040
1041 template<>
1042 struct clear_impl< aux::vector_tag<16> >
1043 {
1044     template< typename Vector > struct apply
1045     {
1046         typedef vector0<> type;
1047     };
1048 };
1049
1050 template<
1051       typename T0, typename T1, typename T2, typename T3, typename T4
1052     , typename T5, typename T6, typename T7, typename T8, typename T9
1053     , typename T10, typename T11, typename T12, typename T13, typename T14
1054     , typename T15, typename T16
1055     >
1056 struct vector17
1057 {
1058     typedef aux::vector_tag<17> tag;
1059     typedef vector17 type;
1060     typedef T0 item0;
1061     typedef T1 item1;
1062     typedef T2 item2;
1063     typedef T3 item3;
1064     typedef T4 item4;
1065     typedef T5 item5;
1066     typedef T6 item6;
1067     typedef T7 item7;
1068     typedef T8 item8;
1069     typedef T9 item9;
1070     typedef T10 item10;
1071     typedef T11 item11;
1072     typedef T12 item12;
1073     typedef T13 item13;
1074     typedef T14 item14;
1075     typedef T15 item15;
1076     typedef T16 item16;
1077     
1078
1079     typedef void_ item17;
1080     typedef T16 back;
1081     typedef v_iter< type,0 > begin;
1082     typedef v_iter< type,17 > end;
1083 };
1084
1085 template<>
1086 struct push_front_impl< aux::vector_tag<16> >
1087 {
1088     template< typename Vector, typename T > struct apply
1089     {
1090         typedef vector17<
1091               T
1092               ,
1093               typename Vector::item0, typename Vector::item1
1094             , typename Vector::item2, typename Vector::item3
1095             , typename Vector::item4, typename Vector::item5
1096             , typename Vector::item6, typename Vector::item7
1097             , typename Vector::item8, typename Vector::item9
1098             , typename Vector::item10, typename Vector::item11
1099             , typename Vector::item12, typename Vector::item13
1100             , typename Vector::item14, typename Vector::item15
1101             > type;
1102     };
1103 };
1104
1105 template<>
1106 struct pop_front_impl< aux::vector_tag<17> >
1107 {
1108     template< typename Vector > struct apply
1109     {
1110         typedef vector16<
1111               typename Vector::item1, typename Vector::item2
1112             , typename Vector::item3, typename Vector::item4
1113             , typename Vector::item5, typename Vector::item6
1114             , typename Vector::item7, typename Vector::item8
1115             , typename Vector::item9, typename Vector::item10
1116             , typename Vector::item11, typename Vector::item12
1117             , typename Vector::item13, typename Vector::item14
1118             , typename Vector::item15, typename Vector::item16
1119             > type;
1120     };
1121 };
1122
1123 template<>
1124 struct push_back_impl< aux::vector_tag<16> >
1125 {
1126     template< typename Vector, typename T > struct apply
1127     {
1128         typedef vector17<
1129               typename Vector::item0, typename Vector::item1
1130             , typename Vector::item2, typename Vector::item3
1131             , typename Vector::item4, typename Vector::item5
1132             , typename Vector::item6, typename Vector::item7
1133             , typename Vector::item8, typename Vector::item9
1134             , typename Vector::item10, typename Vector::item11
1135             , typename Vector::item12, typename Vector::item13
1136             , typename Vector::item14, typename Vector::item15
1137               ,
1138               T
1139             > type;
1140     };
1141 };
1142
1143 template<>
1144 struct pop_back_impl< aux::vector_tag<17> >
1145 {
1146     template< typename Vector > struct apply
1147     {
1148         typedef vector16<
1149               typename Vector::item0, typename Vector::item1
1150             , typename Vector::item2, typename Vector::item3
1151             , typename Vector::item4, typename Vector::item5
1152             , typename Vector::item6, typename Vector::item7
1153             , typename Vector::item8, typename Vector::item9
1154             , typename Vector::item10, typename Vector::item11
1155             , typename Vector::item12, typename Vector::item13
1156             , typename Vector::item14, typename Vector::item15
1157             > type;
1158     };
1159 };
1160
1161 namespace aux {
1162 template<> struct v_at_impl<17>
1163 {
1164     template< typename V_ > struct result_
1165     {
1166         typedef typename V_::item17 type;
1167     };
1168 };
1169
1170 }
1171
1172 template<>
1173 struct at_impl< aux::vector_tag<17> >
1174 {
1175     template< typename V_, typename N > struct apply
1176     {
1177         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
1178             ::template result_<V_>::type type;
1179     };
1180 };
1181
1182 template<>
1183 struct front_impl< aux::vector_tag<17> >
1184 {
1185     template< typename Vector > struct apply
1186     {
1187         typedef typename Vector::item0 type;
1188     };
1189 };
1190
1191 template<>
1192 struct back_impl< aux::vector_tag<17> >
1193 {
1194     template< typename Vector > struct apply
1195     {
1196         typedef typename Vector::back type;
1197     };
1198 };
1199
1200 template<>
1201 struct empty_impl< aux::vector_tag<17> >
1202 {
1203     template< typename Vector > struct apply
1204         : false_
1205     {
1206     };
1207 };
1208
1209 template<>
1210 struct size_impl< aux::vector_tag<17> >
1211 {
1212     template< typename Vector > struct apply
1213         : long_<17>
1214     {
1215     };
1216 };
1217
1218 template<>
1219 struct O1_size_impl< aux::vector_tag<17> >
1220     : size_impl< aux::vector_tag<17> >
1221 {
1222 };
1223
1224 template<>
1225 struct clear_impl< aux::vector_tag<17> >
1226 {
1227     template< typename Vector > struct apply
1228     {
1229         typedef vector0<> type;
1230     };
1231 };
1232
1233 template<
1234       typename T0, typename T1, typename T2, typename T3, typename T4
1235     , typename T5, typename T6, typename T7, typename T8, typename T9
1236     , typename T10, typename T11, typename T12, typename T13, typename T14
1237     , typename T15, typename T16, typename T17
1238     >
1239 struct vector18
1240 {
1241     typedef aux::vector_tag<18> tag;
1242     typedef vector18 type;
1243     typedef T0 item0;
1244     typedef T1 item1;
1245     typedef T2 item2;
1246     typedef T3 item3;
1247     typedef T4 item4;
1248     typedef T5 item5;
1249     typedef T6 item6;
1250     typedef T7 item7;
1251     typedef T8 item8;
1252     typedef T9 item9;
1253     typedef T10 item10;
1254     typedef T11 item11;
1255     typedef T12 item12;
1256     typedef T13 item13;
1257     typedef T14 item14;
1258     typedef T15 item15;
1259     typedef T16 item16;
1260     typedef T17 item17;
1261     
1262
1263     typedef void_ item18;
1264     typedef T17 back;
1265     typedef v_iter< type,0 > begin;
1266     typedef v_iter< type,18 > end;
1267 };
1268
1269 template<>
1270 struct push_front_impl< aux::vector_tag<17> >
1271 {
1272     template< typename Vector, typename T > struct apply
1273     {
1274         typedef vector18<
1275               T
1276               ,
1277               typename Vector::item0, typename Vector::item1
1278             , typename Vector::item2, typename Vector::item3
1279             , typename Vector::item4, typename Vector::item5
1280             , typename Vector::item6, typename Vector::item7
1281             , typename Vector::item8, typename Vector::item9
1282             , typename Vector::item10, typename Vector::item11
1283             , typename Vector::item12, typename Vector::item13
1284             , typename Vector::item14, typename Vector::item15
1285             , typename Vector::item16
1286             > type;
1287     };
1288 };
1289
1290 template<>
1291 struct pop_front_impl< aux::vector_tag<18> >
1292 {
1293     template< typename Vector > struct apply
1294     {
1295         typedef vector17<
1296               typename Vector::item1, typename Vector::item2
1297             , typename Vector::item3, typename Vector::item4
1298             , typename Vector::item5, typename Vector::item6
1299             , typename Vector::item7, typename Vector::item8
1300             , typename Vector::item9, typename Vector::item10
1301             , typename Vector::item11, typename Vector::item12
1302             , typename Vector::item13, typename Vector::item14
1303             , typename Vector::item15, typename Vector::item16
1304             , typename Vector::item17
1305             > type;
1306     };
1307 };
1308
1309 template<>
1310 struct push_back_impl< aux::vector_tag<17> >
1311 {
1312     template< typename Vector, typename T > struct apply
1313     {
1314         typedef vector18<
1315               typename Vector::item0, typename Vector::item1
1316             , typename Vector::item2, typename Vector::item3
1317             , typename Vector::item4, typename Vector::item5
1318             , typename Vector::item6, typename Vector::item7
1319             , typename Vector::item8, typename Vector::item9
1320             , typename Vector::item10, typename Vector::item11
1321             , typename Vector::item12, typename Vector::item13
1322             , typename Vector::item14, typename Vector::item15
1323             , typename Vector::item16
1324               ,
1325               T
1326             > type;
1327     };
1328 };
1329
1330 template<>
1331 struct pop_back_impl< aux::vector_tag<18> >
1332 {
1333     template< typename Vector > struct apply
1334     {
1335         typedef vector17<
1336               typename Vector::item0, typename Vector::item1
1337             , typename Vector::item2, typename Vector::item3
1338             , typename Vector::item4, typename Vector::item5
1339             , typename Vector::item6, typename Vector::item7
1340             , typename Vector::item8, typename Vector::item9
1341             , typename Vector::item10, typename Vector::item11
1342             , typename Vector::item12, typename Vector::item13
1343             , typename Vector::item14, typename Vector::item15
1344             , typename Vector::item16
1345             > type;
1346     };
1347 };
1348
1349 namespace aux {
1350 template<> struct v_at_impl<18>
1351 {
1352     template< typename V_ > struct result_
1353     {
1354         typedef typename V_::item18 type;
1355     };
1356 };
1357
1358 }
1359
1360 template<>
1361 struct at_impl< aux::vector_tag<18> >
1362 {
1363     template< typename V_, typename N > struct apply
1364     {
1365         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
1366             ::template result_<V_>::type type;
1367     };
1368 };
1369
1370 template<>
1371 struct front_impl< aux::vector_tag<18> >
1372 {
1373     template< typename Vector > struct apply
1374     {
1375         typedef typename Vector::item0 type;
1376     };
1377 };
1378
1379 template<>
1380 struct back_impl< aux::vector_tag<18> >
1381 {
1382     template< typename Vector > struct apply
1383     {
1384         typedef typename Vector::back type;
1385     };
1386 };
1387
1388 template<>
1389 struct empty_impl< aux::vector_tag<18> >
1390 {
1391     template< typename Vector > struct apply
1392         : false_
1393     {
1394     };
1395 };
1396
1397 template<>
1398 struct size_impl< aux::vector_tag<18> >
1399 {
1400     template< typename Vector > struct apply
1401         : long_<18>
1402     {
1403     };
1404 };
1405
1406 template<>
1407 struct O1_size_impl< aux::vector_tag<18> >
1408     : size_impl< aux::vector_tag<18> >
1409 {
1410 };
1411
1412 template<>
1413 struct clear_impl< aux::vector_tag<18> >
1414 {
1415     template< typename Vector > struct apply
1416     {
1417         typedef vector0<> type;
1418     };
1419 };
1420
1421 template<
1422       typename T0, typename T1, typename T2, typename T3, typename T4
1423     , typename T5, typename T6, typename T7, typename T8, typename T9
1424     , typename T10, typename T11, typename T12, typename T13, typename T14
1425     , typename T15, typename T16, typename T17, typename T18
1426     >
1427 struct vector19
1428 {
1429     typedef aux::vector_tag<19> tag;
1430     typedef vector19 type;
1431     typedef T0 item0;
1432     typedef T1 item1;
1433     typedef T2 item2;
1434     typedef T3 item3;
1435     typedef T4 item4;
1436     typedef T5 item5;
1437     typedef T6 item6;
1438     typedef T7 item7;
1439     typedef T8 item8;
1440     typedef T9 item9;
1441     typedef T10 item10;
1442     typedef T11 item11;
1443     typedef T12 item12;
1444     typedef T13 item13;
1445     typedef T14 item14;
1446     typedef T15 item15;
1447     typedef T16 item16;
1448     typedef T17 item17;
1449     typedef T18 item18;
1450     
1451
1452     typedef void_ item19;
1453     typedef T18 back;
1454     typedef v_iter< type,0 > begin;
1455     typedef v_iter< type,19 > end;
1456 };
1457
1458 template<>
1459 struct push_front_impl< aux::vector_tag<18> >
1460 {
1461     template< typename Vector, typename T > struct apply
1462     {
1463         typedef vector19<
1464               T
1465               ,
1466               typename Vector::item0, typename Vector::item1
1467             , typename Vector::item2, typename Vector::item3
1468             , typename Vector::item4, typename Vector::item5
1469             , typename Vector::item6, typename Vector::item7
1470             , typename Vector::item8, typename Vector::item9
1471             , typename Vector::item10, typename Vector::item11
1472             , typename Vector::item12, typename Vector::item13
1473             , typename Vector::item14, typename Vector::item15
1474             , typename Vector::item16, typename Vector::item17
1475             > type;
1476     };
1477 };
1478
1479 template<>
1480 struct pop_front_impl< aux::vector_tag<19> >
1481 {
1482     template< typename Vector > struct apply
1483     {
1484         typedef vector18<
1485               typename Vector::item1, typename Vector::item2
1486             , typename Vector::item3, typename Vector::item4
1487             , typename Vector::item5, typename Vector::item6
1488             , typename Vector::item7, typename Vector::item8
1489             , typename Vector::item9, typename Vector::item10
1490             , typename Vector::item11, typename Vector::item12
1491             , typename Vector::item13, typename Vector::item14
1492             , typename Vector::item15, typename Vector::item16
1493             , typename Vector::item17, typename Vector::item18
1494             > type;
1495     };
1496 };
1497
1498 template<>
1499 struct push_back_impl< aux::vector_tag<18> >
1500 {
1501     template< typename Vector, typename T > struct apply
1502     {
1503         typedef vector19<
1504               typename Vector::item0, typename Vector::item1
1505             , typename Vector::item2, typename Vector::item3
1506             , typename Vector::item4, typename Vector::item5
1507             , typename Vector::item6, typename Vector::item7
1508             , typename Vector::item8, typename Vector::item9
1509             , typename Vector::item10, typename Vector::item11
1510             , typename Vector::item12, typename Vector::item13
1511             , typename Vector::item14, typename Vector::item15
1512             , typename Vector::item16, typename Vector::item17
1513               ,
1514               T
1515             > type;
1516     };
1517 };
1518
1519 template<>
1520 struct pop_back_impl< aux::vector_tag<19> >
1521 {
1522     template< typename Vector > struct apply
1523     {
1524         typedef vector18<
1525               typename Vector::item0, typename Vector::item1
1526             , typename Vector::item2, typename Vector::item3
1527             , typename Vector::item4, typename Vector::item5
1528             , typename Vector::item6, typename Vector::item7
1529             , typename Vector::item8, typename Vector::item9
1530             , typename Vector::item10, typename Vector::item11
1531             , typename Vector::item12, typename Vector::item13
1532             , typename Vector::item14, typename Vector::item15
1533             , typename Vector::item16, typename Vector::item17
1534             > type;
1535     };
1536 };
1537
1538 namespace aux {
1539 template<> struct v_at_impl<19>
1540 {
1541     template< typename V_ > struct result_
1542     {
1543         typedef typename V_::item19 type;
1544     };
1545 };
1546
1547 }
1548
1549 template<>
1550 struct at_impl< aux::vector_tag<19> >
1551 {
1552     template< typename V_, typename N > struct apply
1553     {
1554         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
1555             ::template result_<V_>::type type;
1556     };
1557 };
1558
1559 template<>
1560 struct front_impl< aux::vector_tag<19> >
1561 {
1562     template< typename Vector > struct apply
1563     {
1564         typedef typename Vector::item0 type;
1565     };
1566 };
1567
1568 template<>
1569 struct back_impl< aux::vector_tag<19> >
1570 {
1571     template< typename Vector > struct apply
1572     {
1573         typedef typename Vector::back type;
1574     };
1575 };
1576
1577 template<>
1578 struct empty_impl< aux::vector_tag<19> >
1579 {
1580     template< typename Vector > struct apply
1581         : false_
1582     {
1583     };
1584 };
1585
1586 template<>
1587 struct size_impl< aux::vector_tag<19> >
1588 {
1589     template< typename Vector > struct apply
1590         : long_<19>
1591     {
1592     };
1593 };
1594
1595 template<>
1596 struct O1_size_impl< aux::vector_tag<19> >
1597     : size_impl< aux::vector_tag<19> >
1598 {
1599 };
1600
1601 template<>
1602 struct clear_impl< aux::vector_tag<19> >
1603 {
1604     template< typename Vector > struct apply
1605     {
1606         typedef vector0<> type;
1607     };
1608 };
1609
1610 template<
1611       typename T0, typename T1, typename T2, typename T3, typename T4
1612     , typename T5, typename T6, typename T7, typename T8, typename T9
1613     , typename T10, typename T11, typename T12, typename T13, typename T14
1614     , typename T15, typename T16, typename T17, typename T18, typename T19
1615     >
1616 struct vector20
1617 {
1618     typedef aux::vector_tag<20> tag;
1619     typedef vector20 type;
1620     typedef T0 item0;
1621     typedef T1 item1;
1622     typedef T2 item2;
1623     typedef T3 item3;
1624     typedef T4 item4;
1625     typedef T5 item5;
1626     typedef T6 item6;
1627     typedef T7 item7;
1628     typedef T8 item8;
1629     typedef T9 item9;
1630     typedef T10 item10;
1631     typedef T11 item11;
1632     typedef T12 item12;
1633     typedef T13 item13;
1634     typedef T14 item14;
1635     typedef T15 item15;
1636     typedef T16 item16;
1637     typedef T17 item17;
1638     typedef T18 item18;
1639     typedef T19 item19;
1640     
1641
1642     typedef void_ item20;
1643     typedef T19 back;
1644     typedef v_iter< type,0 > begin;
1645     typedef v_iter< type,20 > end;
1646 };
1647
1648 template<>
1649 struct push_front_impl< aux::vector_tag<19> >
1650 {
1651     template< typename Vector, typename T > struct apply
1652     {
1653         typedef vector20<
1654               T
1655               ,
1656               typename Vector::item0, typename Vector::item1
1657             , typename Vector::item2, typename Vector::item3
1658             , typename Vector::item4, typename Vector::item5
1659             , typename Vector::item6, typename Vector::item7
1660             , typename Vector::item8, typename Vector::item9
1661             , typename Vector::item10, typename Vector::item11
1662             , typename Vector::item12, typename Vector::item13
1663             , typename Vector::item14, typename Vector::item15
1664             , typename Vector::item16, typename Vector::item17
1665             , typename Vector::item18
1666             > type;
1667     };
1668 };
1669
1670 template<>
1671 struct pop_front_impl< aux::vector_tag<20> >
1672 {
1673     template< typename Vector > struct apply
1674     {
1675         typedef vector19<
1676               typename Vector::item1, typename Vector::item2
1677             , typename Vector::item3, typename Vector::item4
1678             , typename Vector::item5, typename Vector::item6
1679             , typename Vector::item7, typename Vector::item8
1680             , typename Vector::item9, typename Vector::item10
1681             , typename Vector::item11, typename Vector::item12
1682             , typename Vector::item13, typename Vector::item14
1683             , typename Vector::item15, typename Vector::item16
1684             , typename Vector::item17, typename Vector::item18
1685             , typename Vector::item19
1686             > type;
1687     };
1688 };
1689
1690 template<>
1691 struct push_back_impl< aux::vector_tag<19> >
1692 {
1693     template< typename Vector, typename T > struct apply
1694     {
1695         typedef vector20<
1696               typename Vector::item0, typename Vector::item1
1697             , typename Vector::item2, typename Vector::item3
1698             , typename Vector::item4, typename Vector::item5
1699             , typename Vector::item6, typename Vector::item7
1700             , typename Vector::item8, typename Vector::item9
1701             , typename Vector::item10, typename Vector::item11
1702             , typename Vector::item12, typename Vector::item13
1703             , typename Vector::item14, typename Vector::item15
1704             , typename Vector::item16, typename Vector::item17
1705             , typename Vector::item18
1706               ,
1707               T
1708             > type;
1709     };
1710 };
1711
1712 template<>
1713 struct pop_back_impl< aux::vector_tag<20> >
1714 {
1715     template< typename Vector > struct apply
1716     {
1717         typedef vector19<
1718               typename Vector::item0, typename Vector::item1
1719             , typename Vector::item2, typename Vector::item3
1720             , typename Vector::item4, typename Vector::item5
1721             , typename Vector::item6, typename Vector::item7
1722             , typename Vector::item8, typename Vector::item9
1723             , typename Vector::item10, typename Vector::item11
1724             , typename Vector::item12, typename Vector::item13
1725             , typename Vector::item14, typename Vector::item15
1726             , typename Vector::item16, typename Vector::item17
1727             , typename Vector::item18
1728             > type;
1729     };
1730 };
1731
1732 namespace aux {
1733 template<> struct v_at_impl<20>
1734 {
1735     template< typename V_ > struct result_
1736     {
1737         typedef typename V_::item20 type;
1738     };
1739 };
1740
1741 }
1742
1743 template<>
1744 struct at_impl< aux::vector_tag<20> >
1745 {
1746     template< typename V_, typename N > struct apply
1747     {
1748         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
1749             ::template result_<V_>::type type;
1750     };
1751 };
1752
1753 template<>
1754 struct front_impl< aux::vector_tag<20> >
1755 {
1756     template< typename Vector > struct apply
1757     {
1758         typedef typename Vector::item0 type;
1759     };
1760 };
1761
1762 template<>
1763 struct back_impl< aux::vector_tag<20> >
1764 {
1765     template< typename Vector > struct apply
1766     {
1767         typedef typename Vector::back type;
1768     };
1769 };
1770
1771 template<>
1772 struct empty_impl< aux::vector_tag<20> >
1773 {
1774     template< typename Vector > struct apply
1775         : false_
1776     {
1777     };
1778 };
1779
1780 template<>
1781 struct size_impl< aux::vector_tag<20> >
1782 {
1783     template< typename Vector > struct apply
1784         : long_<20>
1785     {
1786     };
1787 };
1788
1789 template<>
1790 struct O1_size_impl< aux::vector_tag<20> >
1791     : size_impl< aux::vector_tag<20> >
1792 {
1793 };
1794
1795 template<>
1796 struct clear_impl< aux::vector_tag<20> >
1797 {
1798     template< typename Vector > struct apply
1799     {
1800         typedef vector0<> type;
1801     };
1802 };
1803
1804 }}