]> git.donarmstrong.com Git - rsem.git/blob - boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp
RSEM Source Codes
[rsem.git] / boost / mpl / vector / aux_ / preprocessed / no_ctps / vector40.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/vector40.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, typename T11, typename T12, typename T13, typename T14
18     , typename T15, typename T16, typename T17, typename T18, typename T19
19     , typename T20, typename T21, typename T22, typename T23, typename T24
20     , typename T25, typename T26, typename T27, typename T28, typename T29
21     , typename T30
22     >
23 struct vector31
24 {
25     typedef aux::vector_tag<31> tag;
26     typedef vector31 type;
27     typedef T0 item0;
28     typedef T1 item1;
29     typedef T2 item2;
30     typedef T3 item3;
31     typedef T4 item4;
32     typedef T5 item5;
33     typedef T6 item6;
34     typedef T7 item7;
35     typedef T8 item8;
36     typedef T9 item9;
37     typedef T10 item10;
38     typedef T11 item11;
39     typedef T12 item12;
40     typedef T13 item13;
41     typedef T14 item14;
42     typedef T15 item15;
43     typedef T16 item16;
44     typedef T17 item17;
45     typedef T18 item18;
46     typedef T19 item19;
47     typedef T20 item20;
48     typedef T21 item21;
49     typedef T22 item22;
50     typedef T23 item23;
51     typedef T24 item24;
52     typedef T25 item25;
53     typedef T26 item26;
54     typedef T27 item27;
55     typedef T28 item28;
56     typedef T29 item29;
57     typedef T30 item30;
58     
59
60     typedef void_ item31;
61     typedef T30 back;
62     typedef v_iter< type,0 > begin;
63     typedef v_iter< type,31 > end;
64 };
65
66 template<>
67 struct push_front_impl< aux::vector_tag<30> >
68 {
69     template< typename Vector, typename T > struct apply
70     {
71         typedef vector31<
72               T
73               ,
74               typename Vector::item0, typename Vector::item1
75             , typename Vector::item2, typename Vector::item3
76             , typename Vector::item4, typename Vector::item5
77             , typename Vector::item6, typename Vector::item7
78             , typename Vector::item8, typename Vector::item9
79             , typename Vector::item10, typename Vector::item11
80             , typename Vector::item12, typename Vector::item13
81             , typename Vector::item14, typename Vector::item15
82             , typename Vector::item16, typename Vector::item17
83             , typename Vector::item18, typename Vector::item19
84             , typename Vector::item20, typename Vector::item21
85             , typename Vector::item22, typename Vector::item23
86             , typename Vector::item24, typename Vector::item25
87             , typename Vector::item26, typename Vector::item27
88             , typename Vector::item28, typename Vector::item29
89             > type;
90     };
91 };
92
93 template<>
94 struct pop_front_impl< aux::vector_tag<31> >
95 {
96     template< typename Vector > struct apply
97     {
98         typedef vector30<
99               typename Vector::item1, typename Vector::item2
100             , typename Vector::item3, typename Vector::item4
101             , typename Vector::item5, typename Vector::item6
102             , typename Vector::item7, typename Vector::item8
103             , typename Vector::item9, typename Vector::item10
104             , typename Vector::item11, typename Vector::item12
105             , typename Vector::item13, typename Vector::item14
106             , typename Vector::item15, typename Vector::item16
107             , typename Vector::item17, typename Vector::item18
108             , typename Vector::item19, typename Vector::item20
109             , typename Vector::item21, typename Vector::item22
110             , typename Vector::item23, typename Vector::item24
111             , typename Vector::item25, typename Vector::item26
112             , typename Vector::item27, typename Vector::item28
113             , typename Vector::item29, typename Vector::item30
114             > type;
115     };
116 };
117
118 template<>
119 struct push_back_impl< aux::vector_tag<30> >
120 {
121     template< typename Vector, typename T > struct apply
122     {
123         typedef vector31<
124               typename Vector::item0, typename Vector::item1
125             , typename Vector::item2, typename Vector::item3
126             , typename Vector::item4, typename Vector::item5
127             , typename Vector::item6, typename Vector::item7
128             , typename Vector::item8, typename Vector::item9
129             , typename Vector::item10, typename Vector::item11
130             , typename Vector::item12, typename Vector::item13
131             , typename Vector::item14, typename Vector::item15
132             , typename Vector::item16, typename Vector::item17
133             , typename Vector::item18, typename Vector::item19
134             , typename Vector::item20, typename Vector::item21
135             , typename Vector::item22, typename Vector::item23
136             , typename Vector::item24, typename Vector::item25
137             , typename Vector::item26, typename Vector::item27
138             , typename Vector::item28, typename Vector::item29
139               ,
140               T
141             > type;
142     };
143 };
144
145 template<>
146 struct pop_back_impl< aux::vector_tag<31> >
147 {
148     template< typename Vector > struct apply
149     {
150         typedef vector30<
151               typename Vector::item0, typename Vector::item1
152             , typename Vector::item2, typename Vector::item3
153             , typename Vector::item4, typename Vector::item5
154             , typename Vector::item6, typename Vector::item7
155             , typename Vector::item8, typename Vector::item9
156             , typename Vector::item10, typename Vector::item11
157             , typename Vector::item12, typename Vector::item13
158             , typename Vector::item14, typename Vector::item15
159             , typename Vector::item16, typename Vector::item17
160             , typename Vector::item18, typename Vector::item19
161             , typename Vector::item20, typename Vector::item21
162             , typename Vector::item22, typename Vector::item23
163             , typename Vector::item24, typename Vector::item25
164             , typename Vector::item26, typename Vector::item27
165             , typename Vector::item28, typename Vector::item29
166             > type;
167     };
168 };
169
170 namespace aux {
171 template<> struct v_at_impl<31>
172 {
173     template< typename V_ > struct result_
174     {
175         typedef typename V_::item31 type;
176     };
177 };
178
179 }
180
181 template<>
182 struct at_impl< aux::vector_tag<31> >
183 {
184     template< typename V_, typename N > struct apply
185     {
186         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
187             ::template result_<V_>::type type;
188     };
189 };
190
191 template<>
192 struct front_impl< aux::vector_tag<31> >
193 {
194     template< typename Vector > struct apply
195     {
196         typedef typename Vector::item0 type;
197     };
198 };
199
200 template<>
201 struct back_impl< aux::vector_tag<31> >
202 {
203     template< typename Vector > struct apply
204     {
205         typedef typename Vector::back type;
206     };
207 };
208
209 template<>
210 struct empty_impl< aux::vector_tag<31> >
211 {
212     template< typename Vector > struct apply
213         : false_
214     {
215     };
216 };
217
218 template<>
219 struct size_impl< aux::vector_tag<31> >
220 {
221     template< typename Vector > struct apply
222         : long_<31>
223     {
224     };
225 };
226
227 template<>
228 struct O1_size_impl< aux::vector_tag<31> >
229     : size_impl< aux::vector_tag<31> >
230 {
231 };
232
233 template<>
234 struct clear_impl< aux::vector_tag<31> >
235 {
236     template< typename Vector > struct apply
237     {
238         typedef vector0<> type;
239     };
240 };
241
242 template<
243       typename T0, typename T1, typename T2, typename T3, typename T4
244     , typename T5, typename T6, typename T7, typename T8, typename T9
245     , typename T10, typename T11, typename T12, typename T13, typename T14
246     , typename T15, typename T16, typename T17, typename T18, typename T19
247     , typename T20, typename T21, typename T22, typename T23, typename T24
248     , typename T25, typename T26, typename T27, typename T28, typename T29
249     , typename T30, typename T31
250     >
251 struct vector32
252 {
253     typedef aux::vector_tag<32> tag;
254     typedef vector32 type;
255     typedef T0 item0;
256     typedef T1 item1;
257     typedef T2 item2;
258     typedef T3 item3;
259     typedef T4 item4;
260     typedef T5 item5;
261     typedef T6 item6;
262     typedef T7 item7;
263     typedef T8 item8;
264     typedef T9 item9;
265     typedef T10 item10;
266     typedef T11 item11;
267     typedef T12 item12;
268     typedef T13 item13;
269     typedef T14 item14;
270     typedef T15 item15;
271     typedef T16 item16;
272     typedef T17 item17;
273     typedef T18 item18;
274     typedef T19 item19;
275     typedef T20 item20;
276     typedef T21 item21;
277     typedef T22 item22;
278     typedef T23 item23;
279     typedef T24 item24;
280     typedef T25 item25;
281     typedef T26 item26;
282     typedef T27 item27;
283     typedef T28 item28;
284     typedef T29 item29;
285     typedef T30 item30;
286     typedef T31 item31;
287     
288
289     typedef void_ item32;
290     typedef T31 back;
291     typedef v_iter< type,0 > begin;
292     typedef v_iter< type,32 > end;
293 };
294
295 template<>
296 struct push_front_impl< aux::vector_tag<31> >
297 {
298     template< typename Vector, typename T > struct apply
299     {
300         typedef vector32<
301               T
302               ,
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             , typename Vector::item12, typename Vector::item13
310             , typename Vector::item14, typename Vector::item15
311             , typename Vector::item16, typename Vector::item17
312             , typename Vector::item18, typename Vector::item19
313             , typename Vector::item20, typename Vector::item21
314             , typename Vector::item22, typename Vector::item23
315             , typename Vector::item24, typename Vector::item25
316             , typename Vector::item26, typename Vector::item27
317             , typename Vector::item28, typename Vector::item29
318             , typename Vector::item30
319             > type;
320     };
321 };
322
323 template<>
324 struct pop_front_impl< aux::vector_tag<32> >
325 {
326     template< typename Vector > struct apply
327     {
328         typedef vector31<
329               typename Vector::item1, typename Vector::item2
330             , typename Vector::item3, typename Vector::item4
331             , typename Vector::item5, typename Vector::item6
332             , typename Vector::item7, typename Vector::item8
333             , typename Vector::item9, typename Vector::item10
334             , typename Vector::item11, typename Vector::item12
335             , typename Vector::item13, typename Vector::item14
336             , typename Vector::item15, typename Vector::item16
337             , typename Vector::item17, typename Vector::item18
338             , typename Vector::item19, typename Vector::item20
339             , typename Vector::item21, typename Vector::item22
340             , typename Vector::item23, typename Vector::item24
341             , typename Vector::item25, typename Vector::item26
342             , typename Vector::item27, typename Vector::item28
343             , typename Vector::item29, typename Vector::item30
344             , typename Vector::item31
345             > type;
346     };
347 };
348
349 template<>
350 struct push_back_impl< aux::vector_tag<31> >
351 {
352     template< typename Vector, typename T > struct apply
353     {
354         typedef vector32<
355               typename Vector::item0, typename Vector::item1
356             , typename Vector::item2, typename Vector::item3
357             , typename Vector::item4, typename Vector::item5
358             , typename Vector::item6, typename Vector::item7
359             , typename Vector::item8, typename Vector::item9
360             , typename Vector::item10, typename Vector::item11
361             , typename Vector::item12, typename Vector::item13
362             , typename Vector::item14, typename Vector::item15
363             , typename Vector::item16, typename Vector::item17
364             , typename Vector::item18, typename Vector::item19
365             , typename Vector::item20, typename Vector::item21
366             , typename Vector::item22, typename Vector::item23
367             , typename Vector::item24, typename Vector::item25
368             , typename Vector::item26, typename Vector::item27
369             , typename Vector::item28, typename Vector::item29
370             , typename Vector::item30
371               ,
372               T
373             > type;
374     };
375 };
376
377 template<>
378 struct pop_back_impl< aux::vector_tag<32> >
379 {
380     template< typename Vector > struct apply
381     {
382         typedef vector31<
383               typename Vector::item0, typename Vector::item1
384             , typename Vector::item2, typename Vector::item3
385             , typename Vector::item4, typename Vector::item5
386             , typename Vector::item6, typename Vector::item7
387             , typename Vector::item8, typename Vector::item9
388             , typename Vector::item10, typename Vector::item11
389             , typename Vector::item12, typename Vector::item13
390             , typename Vector::item14, typename Vector::item15
391             , typename Vector::item16, typename Vector::item17
392             , typename Vector::item18, typename Vector::item19
393             , typename Vector::item20, typename Vector::item21
394             , typename Vector::item22, typename Vector::item23
395             , typename Vector::item24, typename Vector::item25
396             , typename Vector::item26, typename Vector::item27
397             , typename Vector::item28, typename Vector::item29
398             , typename Vector::item30
399             > type;
400     };
401 };
402
403 namespace aux {
404 template<> struct v_at_impl<32>
405 {
406     template< typename V_ > struct result_
407     {
408         typedef typename V_::item32 type;
409     };
410 };
411
412 }
413
414 template<>
415 struct at_impl< aux::vector_tag<32> >
416 {
417     template< typename V_, typename N > struct apply
418     {
419         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
420             ::template result_<V_>::type type;
421     };
422 };
423
424 template<>
425 struct front_impl< aux::vector_tag<32> >
426 {
427     template< typename Vector > struct apply
428     {
429         typedef typename Vector::item0 type;
430     };
431 };
432
433 template<>
434 struct back_impl< aux::vector_tag<32> >
435 {
436     template< typename Vector > struct apply
437     {
438         typedef typename Vector::back type;
439     };
440 };
441
442 template<>
443 struct empty_impl< aux::vector_tag<32> >
444 {
445     template< typename Vector > struct apply
446         : false_
447     {
448     };
449 };
450
451 template<>
452 struct size_impl< aux::vector_tag<32> >
453 {
454     template< typename Vector > struct apply
455         : long_<32>
456     {
457     };
458 };
459
460 template<>
461 struct O1_size_impl< aux::vector_tag<32> >
462     : size_impl< aux::vector_tag<32> >
463 {
464 };
465
466 template<>
467 struct clear_impl< aux::vector_tag<32> >
468 {
469     template< typename Vector > struct apply
470     {
471         typedef vector0<> type;
472     };
473 };
474
475 template<
476       typename T0, typename T1, typename T2, typename T3, typename T4
477     , typename T5, typename T6, typename T7, typename T8, typename T9
478     , typename T10, typename T11, typename T12, typename T13, typename T14
479     , typename T15, typename T16, typename T17, typename T18, typename T19
480     , typename T20, typename T21, typename T22, typename T23, typename T24
481     , typename T25, typename T26, typename T27, typename T28, typename T29
482     , typename T30, typename T31, typename T32
483     >
484 struct vector33
485 {
486     typedef aux::vector_tag<33> tag;
487     typedef vector33 type;
488     typedef T0 item0;
489     typedef T1 item1;
490     typedef T2 item2;
491     typedef T3 item3;
492     typedef T4 item4;
493     typedef T5 item5;
494     typedef T6 item6;
495     typedef T7 item7;
496     typedef T8 item8;
497     typedef T9 item9;
498     typedef T10 item10;
499     typedef T11 item11;
500     typedef T12 item12;
501     typedef T13 item13;
502     typedef T14 item14;
503     typedef T15 item15;
504     typedef T16 item16;
505     typedef T17 item17;
506     typedef T18 item18;
507     typedef T19 item19;
508     typedef T20 item20;
509     typedef T21 item21;
510     typedef T22 item22;
511     typedef T23 item23;
512     typedef T24 item24;
513     typedef T25 item25;
514     typedef T26 item26;
515     typedef T27 item27;
516     typedef T28 item28;
517     typedef T29 item29;
518     typedef T30 item30;
519     typedef T31 item31;
520     typedef T32 item32;
521     
522
523     typedef void_ item33;
524     typedef T32 back;
525     typedef v_iter< type,0 > begin;
526     typedef v_iter< type,33 > end;
527 };
528
529 template<>
530 struct push_front_impl< aux::vector_tag<32> >
531 {
532     template< typename Vector, typename T > struct apply
533     {
534         typedef vector33<
535               T
536               ,
537               typename Vector::item0, typename Vector::item1
538             , typename Vector::item2, typename Vector::item3
539             , typename Vector::item4, typename Vector::item5
540             , typename Vector::item6, typename Vector::item7
541             , typename Vector::item8, typename Vector::item9
542             , typename Vector::item10, typename Vector::item11
543             , typename Vector::item12, typename Vector::item13
544             , typename Vector::item14, typename Vector::item15
545             , typename Vector::item16, typename Vector::item17
546             , typename Vector::item18, typename Vector::item19
547             , typename Vector::item20, typename Vector::item21
548             , typename Vector::item22, typename Vector::item23
549             , typename Vector::item24, typename Vector::item25
550             , typename Vector::item26, typename Vector::item27
551             , typename Vector::item28, typename Vector::item29
552             , typename Vector::item30, typename Vector::item31
553             > type;
554     };
555 };
556
557 template<>
558 struct pop_front_impl< aux::vector_tag<33> >
559 {
560     template< typename Vector > struct apply
561     {
562         typedef vector32<
563               typename Vector::item1, typename Vector::item2
564             , typename Vector::item3, typename Vector::item4
565             , typename Vector::item5, typename Vector::item6
566             , typename Vector::item7, typename Vector::item8
567             , typename Vector::item9, typename Vector::item10
568             , typename Vector::item11, typename Vector::item12
569             , typename Vector::item13, typename Vector::item14
570             , typename Vector::item15, typename Vector::item16
571             , typename Vector::item17, typename Vector::item18
572             , typename Vector::item19, typename Vector::item20
573             , typename Vector::item21, typename Vector::item22
574             , typename Vector::item23, typename Vector::item24
575             , typename Vector::item25, typename Vector::item26
576             , typename Vector::item27, typename Vector::item28
577             , typename Vector::item29, typename Vector::item30
578             , typename Vector::item31, typename Vector::item32
579             > type;
580     };
581 };
582
583 template<>
584 struct push_back_impl< aux::vector_tag<32> >
585 {
586     template< typename Vector, typename T > struct apply
587     {
588         typedef vector33<
589               typename Vector::item0, typename Vector::item1
590             , typename Vector::item2, typename Vector::item3
591             , typename Vector::item4, typename Vector::item5
592             , typename Vector::item6, typename Vector::item7
593             , typename Vector::item8, typename Vector::item9
594             , typename Vector::item10, typename Vector::item11
595             , typename Vector::item12, typename Vector::item13
596             , typename Vector::item14, typename Vector::item15
597             , typename Vector::item16, typename Vector::item17
598             , typename Vector::item18, typename Vector::item19
599             , typename Vector::item20, typename Vector::item21
600             , typename Vector::item22, typename Vector::item23
601             , typename Vector::item24, typename Vector::item25
602             , typename Vector::item26, typename Vector::item27
603             , typename Vector::item28, typename Vector::item29
604             , typename Vector::item30, typename Vector::item31
605               ,
606               T
607             > type;
608     };
609 };
610
611 template<>
612 struct pop_back_impl< aux::vector_tag<33> >
613 {
614     template< typename Vector > struct apply
615     {
616         typedef vector32<
617               typename Vector::item0, typename Vector::item1
618             , typename Vector::item2, typename Vector::item3
619             , typename Vector::item4, typename Vector::item5
620             , typename Vector::item6, typename Vector::item7
621             , typename Vector::item8, typename Vector::item9
622             , typename Vector::item10, typename Vector::item11
623             , typename Vector::item12, typename Vector::item13
624             , typename Vector::item14, typename Vector::item15
625             , typename Vector::item16, typename Vector::item17
626             , typename Vector::item18, typename Vector::item19
627             , typename Vector::item20, typename Vector::item21
628             , typename Vector::item22, typename Vector::item23
629             , typename Vector::item24, typename Vector::item25
630             , typename Vector::item26, typename Vector::item27
631             , typename Vector::item28, typename Vector::item29
632             , typename Vector::item30, typename Vector::item31
633             > type;
634     };
635 };
636
637 namespace aux {
638 template<> struct v_at_impl<33>
639 {
640     template< typename V_ > struct result_
641     {
642         typedef typename V_::item33 type;
643     };
644 };
645
646 }
647
648 template<>
649 struct at_impl< aux::vector_tag<33> >
650 {
651     template< typename V_, typename N > struct apply
652     {
653         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
654             ::template result_<V_>::type type;
655     };
656 };
657
658 template<>
659 struct front_impl< aux::vector_tag<33> >
660 {
661     template< typename Vector > struct apply
662     {
663         typedef typename Vector::item0 type;
664     };
665 };
666
667 template<>
668 struct back_impl< aux::vector_tag<33> >
669 {
670     template< typename Vector > struct apply
671     {
672         typedef typename Vector::back type;
673     };
674 };
675
676 template<>
677 struct empty_impl< aux::vector_tag<33> >
678 {
679     template< typename Vector > struct apply
680         : false_
681     {
682     };
683 };
684
685 template<>
686 struct size_impl< aux::vector_tag<33> >
687 {
688     template< typename Vector > struct apply
689         : long_<33>
690     {
691     };
692 };
693
694 template<>
695 struct O1_size_impl< aux::vector_tag<33> >
696     : size_impl< aux::vector_tag<33> >
697 {
698 };
699
700 template<>
701 struct clear_impl< aux::vector_tag<33> >
702 {
703     template< typename Vector > struct apply
704     {
705         typedef vector0<> type;
706     };
707 };
708
709 template<
710       typename T0, typename T1, typename T2, typename T3, typename T4
711     , typename T5, typename T6, typename T7, typename T8, typename T9
712     , typename T10, typename T11, typename T12, typename T13, typename T14
713     , typename T15, typename T16, typename T17, typename T18, typename T19
714     , typename T20, typename T21, typename T22, typename T23, typename T24
715     , typename T25, typename T26, typename T27, typename T28, typename T29
716     , typename T30, typename T31, typename T32, typename T33
717     >
718 struct vector34
719 {
720     typedef aux::vector_tag<34> tag;
721     typedef vector34 type;
722     typedef T0 item0;
723     typedef T1 item1;
724     typedef T2 item2;
725     typedef T3 item3;
726     typedef T4 item4;
727     typedef T5 item5;
728     typedef T6 item6;
729     typedef T7 item7;
730     typedef T8 item8;
731     typedef T9 item9;
732     typedef T10 item10;
733     typedef T11 item11;
734     typedef T12 item12;
735     typedef T13 item13;
736     typedef T14 item14;
737     typedef T15 item15;
738     typedef T16 item16;
739     typedef T17 item17;
740     typedef T18 item18;
741     typedef T19 item19;
742     typedef T20 item20;
743     typedef T21 item21;
744     typedef T22 item22;
745     typedef T23 item23;
746     typedef T24 item24;
747     typedef T25 item25;
748     typedef T26 item26;
749     typedef T27 item27;
750     typedef T28 item28;
751     typedef T29 item29;
752     typedef T30 item30;
753     typedef T31 item31;
754     typedef T32 item32;
755     typedef T33 item33;
756     
757
758     typedef void_ item34;
759     typedef T33 back;
760     typedef v_iter< type,0 > begin;
761     typedef v_iter< type,34 > end;
762 };
763
764 template<>
765 struct push_front_impl< aux::vector_tag<33> >
766 {
767     template< typename Vector, typename T > struct apply
768     {
769         typedef vector34<
770               T
771               ,
772               typename Vector::item0, typename Vector::item1
773             , typename Vector::item2, typename Vector::item3
774             , typename Vector::item4, typename Vector::item5
775             , typename Vector::item6, typename Vector::item7
776             , typename Vector::item8, typename Vector::item9
777             , typename Vector::item10, typename Vector::item11
778             , typename Vector::item12, typename Vector::item13
779             , typename Vector::item14, typename Vector::item15
780             , typename Vector::item16, typename Vector::item17
781             , typename Vector::item18, typename Vector::item19
782             , typename Vector::item20, typename Vector::item21
783             , typename Vector::item22, typename Vector::item23
784             , typename Vector::item24, typename Vector::item25
785             , typename Vector::item26, typename Vector::item27
786             , typename Vector::item28, typename Vector::item29
787             , typename Vector::item30, typename Vector::item31
788             , typename Vector::item32
789             > type;
790     };
791 };
792
793 template<>
794 struct pop_front_impl< aux::vector_tag<34> >
795 {
796     template< typename Vector > struct apply
797     {
798         typedef vector33<
799               typename Vector::item1, typename Vector::item2
800             , typename Vector::item3, typename Vector::item4
801             , typename Vector::item5, typename Vector::item6
802             , typename Vector::item7, typename Vector::item8
803             , typename Vector::item9, typename Vector::item10
804             , typename Vector::item11, typename Vector::item12
805             , typename Vector::item13, typename Vector::item14
806             , typename Vector::item15, typename Vector::item16
807             , typename Vector::item17, typename Vector::item18
808             , typename Vector::item19, typename Vector::item20
809             , typename Vector::item21, typename Vector::item22
810             , typename Vector::item23, typename Vector::item24
811             , typename Vector::item25, typename Vector::item26
812             , typename Vector::item27, typename Vector::item28
813             , typename Vector::item29, typename Vector::item30
814             , typename Vector::item31, typename Vector::item32
815             , typename Vector::item33
816             > type;
817     };
818 };
819
820 template<>
821 struct push_back_impl< aux::vector_tag<33> >
822 {
823     template< typename Vector, typename T > struct apply
824     {
825         typedef vector34<
826               typename Vector::item0, typename Vector::item1
827             , typename Vector::item2, typename Vector::item3
828             , typename Vector::item4, typename Vector::item5
829             , typename Vector::item6, typename Vector::item7
830             , typename Vector::item8, typename Vector::item9
831             , typename Vector::item10, typename Vector::item11
832             , typename Vector::item12, typename Vector::item13
833             , typename Vector::item14, typename Vector::item15
834             , typename Vector::item16, typename Vector::item17
835             , typename Vector::item18, typename Vector::item19
836             , typename Vector::item20, typename Vector::item21
837             , typename Vector::item22, typename Vector::item23
838             , typename Vector::item24, typename Vector::item25
839             , typename Vector::item26, typename Vector::item27
840             , typename Vector::item28, typename Vector::item29
841             , typename Vector::item30, typename Vector::item31
842             , typename Vector::item32
843               ,
844               T
845             > type;
846     };
847 };
848
849 template<>
850 struct pop_back_impl< aux::vector_tag<34> >
851 {
852     template< typename Vector > struct apply
853     {
854         typedef vector33<
855               typename Vector::item0, typename Vector::item1
856             , typename Vector::item2, typename Vector::item3
857             , typename Vector::item4, typename Vector::item5
858             , typename Vector::item6, typename Vector::item7
859             , typename Vector::item8, typename Vector::item9
860             , typename Vector::item10, typename Vector::item11
861             , typename Vector::item12, typename Vector::item13
862             , typename Vector::item14, typename Vector::item15
863             , typename Vector::item16, typename Vector::item17
864             , typename Vector::item18, typename Vector::item19
865             , typename Vector::item20, typename Vector::item21
866             , typename Vector::item22, typename Vector::item23
867             , typename Vector::item24, typename Vector::item25
868             , typename Vector::item26, typename Vector::item27
869             , typename Vector::item28, typename Vector::item29
870             , typename Vector::item30, typename Vector::item31
871             , typename Vector::item32
872             > type;
873     };
874 };
875
876 namespace aux {
877 template<> struct v_at_impl<34>
878 {
879     template< typename V_ > struct result_
880     {
881         typedef typename V_::item34 type;
882     };
883 };
884
885 }
886
887 template<>
888 struct at_impl< aux::vector_tag<34> >
889 {
890     template< typename V_, typename N > struct apply
891     {
892         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
893             ::template result_<V_>::type type;
894     };
895 };
896
897 template<>
898 struct front_impl< aux::vector_tag<34> >
899 {
900     template< typename Vector > struct apply
901     {
902         typedef typename Vector::item0 type;
903     };
904 };
905
906 template<>
907 struct back_impl< aux::vector_tag<34> >
908 {
909     template< typename Vector > struct apply
910     {
911         typedef typename Vector::back type;
912     };
913 };
914
915 template<>
916 struct empty_impl< aux::vector_tag<34> >
917 {
918     template< typename Vector > struct apply
919         : false_
920     {
921     };
922 };
923
924 template<>
925 struct size_impl< aux::vector_tag<34> >
926 {
927     template< typename Vector > struct apply
928         : long_<34>
929     {
930     };
931 };
932
933 template<>
934 struct O1_size_impl< aux::vector_tag<34> >
935     : size_impl< aux::vector_tag<34> >
936 {
937 };
938
939 template<>
940 struct clear_impl< aux::vector_tag<34> >
941 {
942     template< typename Vector > struct apply
943     {
944         typedef vector0<> type;
945     };
946 };
947
948 template<
949       typename T0, typename T1, typename T2, typename T3, typename T4
950     , typename T5, typename T6, typename T7, typename T8, typename T9
951     , typename T10, typename T11, typename T12, typename T13, typename T14
952     , typename T15, typename T16, typename T17, typename T18, typename T19
953     , typename T20, typename T21, typename T22, typename T23, typename T24
954     , typename T25, typename T26, typename T27, typename T28, typename T29
955     , typename T30, typename T31, typename T32, typename T33, typename T34
956     >
957 struct vector35
958 {
959     typedef aux::vector_tag<35> tag;
960     typedef vector35 type;
961     typedef T0 item0;
962     typedef T1 item1;
963     typedef T2 item2;
964     typedef T3 item3;
965     typedef T4 item4;
966     typedef T5 item5;
967     typedef T6 item6;
968     typedef T7 item7;
969     typedef T8 item8;
970     typedef T9 item9;
971     typedef T10 item10;
972     typedef T11 item11;
973     typedef T12 item12;
974     typedef T13 item13;
975     typedef T14 item14;
976     typedef T15 item15;
977     typedef T16 item16;
978     typedef T17 item17;
979     typedef T18 item18;
980     typedef T19 item19;
981     typedef T20 item20;
982     typedef T21 item21;
983     typedef T22 item22;
984     typedef T23 item23;
985     typedef T24 item24;
986     typedef T25 item25;
987     typedef T26 item26;
988     typedef T27 item27;
989     typedef T28 item28;
990     typedef T29 item29;
991     typedef T30 item30;
992     typedef T31 item31;
993     typedef T32 item32;
994     typedef T33 item33;
995     typedef T34 item34;
996     
997
998     typedef void_ item35;
999     typedef T34 back;
1000     typedef v_iter< type,0 > begin;
1001     typedef v_iter< type,35 > end;
1002 };
1003
1004 template<>
1005 struct push_front_impl< aux::vector_tag<34> >
1006 {
1007     template< typename Vector, typename T > struct apply
1008     {
1009         typedef vector35<
1010               T
1011               ,
1012               typename Vector::item0, typename Vector::item1
1013             , typename Vector::item2, typename Vector::item3
1014             , typename Vector::item4, typename Vector::item5
1015             , typename Vector::item6, typename Vector::item7
1016             , typename Vector::item8, typename Vector::item9
1017             , typename Vector::item10, typename Vector::item11
1018             , typename Vector::item12, typename Vector::item13
1019             , typename Vector::item14, typename Vector::item15
1020             , typename Vector::item16, typename Vector::item17
1021             , typename Vector::item18, typename Vector::item19
1022             , typename Vector::item20, typename Vector::item21
1023             , typename Vector::item22, typename Vector::item23
1024             , typename Vector::item24, typename Vector::item25
1025             , typename Vector::item26, typename Vector::item27
1026             , typename Vector::item28, typename Vector::item29
1027             , typename Vector::item30, typename Vector::item31
1028             , typename Vector::item32, typename Vector::item33
1029             > type;
1030     };
1031 };
1032
1033 template<>
1034 struct pop_front_impl< aux::vector_tag<35> >
1035 {
1036     template< typename Vector > struct apply
1037     {
1038         typedef vector34<
1039               typename Vector::item1, typename Vector::item2
1040             , typename Vector::item3, typename Vector::item4
1041             , typename Vector::item5, typename Vector::item6
1042             , typename Vector::item7, typename Vector::item8
1043             , typename Vector::item9, typename Vector::item10
1044             , typename Vector::item11, typename Vector::item12
1045             , typename Vector::item13, typename Vector::item14
1046             , typename Vector::item15, typename Vector::item16
1047             , typename Vector::item17, typename Vector::item18
1048             , typename Vector::item19, typename Vector::item20
1049             , typename Vector::item21, typename Vector::item22
1050             , typename Vector::item23, typename Vector::item24
1051             , typename Vector::item25, typename Vector::item26
1052             , typename Vector::item27, typename Vector::item28
1053             , typename Vector::item29, typename Vector::item30
1054             , typename Vector::item31, typename Vector::item32
1055             , typename Vector::item33, typename Vector::item34
1056             > type;
1057     };
1058 };
1059
1060 template<>
1061 struct push_back_impl< aux::vector_tag<34> >
1062 {
1063     template< typename Vector, typename T > struct apply
1064     {
1065         typedef vector35<
1066               typename Vector::item0, typename Vector::item1
1067             , typename Vector::item2, typename Vector::item3
1068             , typename Vector::item4, typename Vector::item5
1069             , typename Vector::item6, typename Vector::item7
1070             , typename Vector::item8, typename Vector::item9
1071             , typename Vector::item10, typename Vector::item11
1072             , typename Vector::item12, typename Vector::item13
1073             , typename Vector::item14, typename Vector::item15
1074             , typename Vector::item16, typename Vector::item17
1075             , typename Vector::item18, typename Vector::item19
1076             , typename Vector::item20, typename Vector::item21
1077             , typename Vector::item22, typename Vector::item23
1078             , typename Vector::item24, typename Vector::item25
1079             , typename Vector::item26, typename Vector::item27
1080             , typename Vector::item28, typename Vector::item29
1081             , typename Vector::item30, typename Vector::item31
1082             , typename Vector::item32, typename Vector::item33
1083               ,
1084               T
1085             > type;
1086     };
1087 };
1088
1089 template<>
1090 struct pop_back_impl< aux::vector_tag<35> >
1091 {
1092     template< typename Vector > struct apply
1093     {
1094         typedef vector34<
1095               typename Vector::item0, typename Vector::item1
1096             , typename Vector::item2, typename Vector::item3
1097             , typename Vector::item4, typename Vector::item5
1098             , typename Vector::item6, typename Vector::item7
1099             , typename Vector::item8, typename Vector::item9
1100             , typename Vector::item10, typename Vector::item11
1101             , typename Vector::item12, typename Vector::item13
1102             , typename Vector::item14, typename Vector::item15
1103             , typename Vector::item16, typename Vector::item17
1104             , typename Vector::item18, typename Vector::item19
1105             , typename Vector::item20, typename Vector::item21
1106             , typename Vector::item22, typename Vector::item23
1107             , typename Vector::item24, typename Vector::item25
1108             , typename Vector::item26, typename Vector::item27
1109             , typename Vector::item28, typename Vector::item29
1110             , typename Vector::item30, typename Vector::item31
1111             , typename Vector::item32, typename Vector::item33
1112             > type;
1113     };
1114 };
1115
1116 namespace aux {
1117 template<> struct v_at_impl<35>
1118 {
1119     template< typename V_ > struct result_
1120     {
1121         typedef typename V_::item35 type;
1122     };
1123 };
1124
1125 }
1126
1127 template<>
1128 struct at_impl< aux::vector_tag<35> >
1129 {
1130     template< typename V_, typename N > struct apply
1131     {
1132         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
1133             ::template result_<V_>::type type;
1134     };
1135 };
1136
1137 template<>
1138 struct front_impl< aux::vector_tag<35> >
1139 {
1140     template< typename Vector > struct apply
1141     {
1142         typedef typename Vector::item0 type;
1143     };
1144 };
1145
1146 template<>
1147 struct back_impl< aux::vector_tag<35> >
1148 {
1149     template< typename Vector > struct apply
1150     {
1151         typedef typename Vector::back type;
1152     };
1153 };
1154
1155 template<>
1156 struct empty_impl< aux::vector_tag<35> >
1157 {
1158     template< typename Vector > struct apply
1159         : false_
1160     {
1161     };
1162 };
1163
1164 template<>
1165 struct size_impl< aux::vector_tag<35> >
1166 {
1167     template< typename Vector > struct apply
1168         : long_<35>
1169     {
1170     };
1171 };
1172
1173 template<>
1174 struct O1_size_impl< aux::vector_tag<35> >
1175     : size_impl< aux::vector_tag<35> >
1176 {
1177 };
1178
1179 template<>
1180 struct clear_impl< aux::vector_tag<35> >
1181 {
1182     template< typename Vector > struct apply
1183     {
1184         typedef vector0<> type;
1185     };
1186 };
1187
1188 template<
1189       typename T0, typename T1, typename T2, typename T3, typename T4
1190     , typename T5, typename T6, typename T7, typename T8, typename T9
1191     , typename T10, typename T11, typename T12, typename T13, typename T14
1192     , typename T15, typename T16, typename T17, typename T18, typename T19
1193     , typename T20, typename T21, typename T22, typename T23, typename T24
1194     , typename T25, typename T26, typename T27, typename T28, typename T29
1195     , typename T30, typename T31, typename T32, typename T33, typename T34
1196     , typename T35
1197     >
1198 struct vector36
1199 {
1200     typedef aux::vector_tag<36> tag;
1201     typedef vector36 type;
1202     typedef T0 item0;
1203     typedef T1 item1;
1204     typedef T2 item2;
1205     typedef T3 item3;
1206     typedef T4 item4;
1207     typedef T5 item5;
1208     typedef T6 item6;
1209     typedef T7 item7;
1210     typedef T8 item8;
1211     typedef T9 item9;
1212     typedef T10 item10;
1213     typedef T11 item11;
1214     typedef T12 item12;
1215     typedef T13 item13;
1216     typedef T14 item14;
1217     typedef T15 item15;
1218     typedef T16 item16;
1219     typedef T17 item17;
1220     typedef T18 item18;
1221     typedef T19 item19;
1222     typedef T20 item20;
1223     typedef T21 item21;
1224     typedef T22 item22;
1225     typedef T23 item23;
1226     typedef T24 item24;
1227     typedef T25 item25;
1228     typedef T26 item26;
1229     typedef T27 item27;
1230     typedef T28 item28;
1231     typedef T29 item29;
1232     typedef T30 item30;
1233     typedef T31 item31;
1234     typedef T32 item32;
1235     typedef T33 item33;
1236     typedef T34 item34;
1237     typedef T35 item35;
1238     
1239
1240     typedef void_ item36;
1241     typedef T35 back;
1242     typedef v_iter< type,0 > begin;
1243     typedef v_iter< type,36 > end;
1244 };
1245
1246 template<>
1247 struct push_front_impl< aux::vector_tag<35> >
1248 {
1249     template< typename Vector, typename T > struct apply
1250     {
1251         typedef vector36<
1252               T
1253               ,
1254               typename Vector::item0, typename Vector::item1
1255             , typename Vector::item2, typename Vector::item3
1256             , typename Vector::item4, typename Vector::item5
1257             , typename Vector::item6, typename Vector::item7
1258             , typename Vector::item8, typename Vector::item9
1259             , typename Vector::item10, typename Vector::item11
1260             , typename Vector::item12, typename Vector::item13
1261             , typename Vector::item14, typename Vector::item15
1262             , typename Vector::item16, typename Vector::item17
1263             , typename Vector::item18, typename Vector::item19
1264             , typename Vector::item20, typename Vector::item21
1265             , typename Vector::item22, typename Vector::item23
1266             , typename Vector::item24, typename Vector::item25
1267             , typename Vector::item26, typename Vector::item27
1268             , typename Vector::item28, typename Vector::item29
1269             , typename Vector::item30, typename Vector::item31
1270             , typename Vector::item32, typename Vector::item33
1271             , typename Vector::item34
1272             > type;
1273     };
1274 };
1275
1276 template<>
1277 struct pop_front_impl< aux::vector_tag<36> >
1278 {
1279     template< typename Vector > struct apply
1280     {
1281         typedef vector35<
1282               typename Vector::item1, typename Vector::item2
1283             , typename Vector::item3, typename Vector::item4
1284             , typename Vector::item5, typename Vector::item6
1285             , typename Vector::item7, typename Vector::item8
1286             , typename Vector::item9, typename Vector::item10
1287             , typename Vector::item11, typename Vector::item12
1288             , typename Vector::item13, typename Vector::item14
1289             , typename Vector::item15, typename Vector::item16
1290             , typename Vector::item17, typename Vector::item18
1291             , typename Vector::item19, typename Vector::item20
1292             , typename Vector::item21, typename Vector::item22
1293             , typename Vector::item23, typename Vector::item24
1294             , typename Vector::item25, typename Vector::item26
1295             , typename Vector::item27, typename Vector::item28
1296             , typename Vector::item29, typename Vector::item30
1297             , typename Vector::item31, typename Vector::item32
1298             , typename Vector::item33, typename Vector::item34
1299             , typename Vector::item35
1300             > type;
1301     };
1302 };
1303
1304 template<>
1305 struct push_back_impl< aux::vector_tag<35> >
1306 {
1307     template< typename Vector, typename T > struct apply
1308     {
1309         typedef vector36<
1310               typename Vector::item0, typename Vector::item1
1311             , typename Vector::item2, typename Vector::item3
1312             , typename Vector::item4, typename Vector::item5
1313             , typename Vector::item6, typename Vector::item7
1314             , typename Vector::item8, typename Vector::item9
1315             , typename Vector::item10, typename Vector::item11
1316             , typename Vector::item12, typename Vector::item13
1317             , typename Vector::item14, typename Vector::item15
1318             , typename Vector::item16, typename Vector::item17
1319             , typename Vector::item18, typename Vector::item19
1320             , typename Vector::item20, typename Vector::item21
1321             , typename Vector::item22, typename Vector::item23
1322             , typename Vector::item24, typename Vector::item25
1323             , typename Vector::item26, typename Vector::item27
1324             , typename Vector::item28, typename Vector::item29
1325             , typename Vector::item30, typename Vector::item31
1326             , typename Vector::item32, typename Vector::item33
1327             , typename Vector::item34
1328               ,
1329               T
1330             > type;
1331     };
1332 };
1333
1334 template<>
1335 struct pop_back_impl< aux::vector_tag<36> >
1336 {
1337     template< typename Vector > struct apply
1338     {
1339         typedef vector35<
1340               typename Vector::item0, typename Vector::item1
1341             , typename Vector::item2, typename Vector::item3
1342             , typename Vector::item4, typename Vector::item5
1343             , typename Vector::item6, typename Vector::item7
1344             , typename Vector::item8, typename Vector::item9
1345             , typename Vector::item10, typename Vector::item11
1346             , typename Vector::item12, typename Vector::item13
1347             , typename Vector::item14, typename Vector::item15
1348             , typename Vector::item16, typename Vector::item17
1349             , typename Vector::item18, typename Vector::item19
1350             , typename Vector::item20, typename Vector::item21
1351             , typename Vector::item22, typename Vector::item23
1352             , typename Vector::item24, typename Vector::item25
1353             , typename Vector::item26, typename Vector::item27
1354             , typename Vector::item28, typename Vector::item29
1355             , typename Vector::item30, typename Vector::item31
1356             , typename Vector::item32, typename Vector::item33
1357             , typename Vector::item34
1358             > type;
1359     };
1360 };
1361
1362 namespace aux {
1363 template<> struct v_at_impl<36>
1364 {
1365     template< typename V_ > struct result_
1366     {
1367         typedef typename V_::item36 type;
1368     };
1369 };
1370
1371 }
1372
1373 template<>
1374 struct at_impl< aux::vector_tag<36> >
1375 {
1376     template< typename V_, typename N > struct apply
1377     {
1378         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
1379             ::template result_<V_>::type type;
1380     };
1381 };
1382
1383 template<>
1384 struct front_impl< aux::vector_tag<36> >
1385 {
1386     template< typename Vector > struct apply
1387     {
1388         typedef typename Vector::item0 type;
1389     };
1390 };
1391
1392 template<>
1393 struct back_impl< aux::vector_tag<36> >
1394 {
1395     template< typename Vector > struct apply
1396     {
1397         typedef typename Vector::back type;
1398     };
1399 };
1400
1401 template<>
1402 struct empty_impl< aux::vector_tag<36> >
1403 {
1404     template< typename Vector > struct apply
1405         : false_
1406     {
1407     };
1408 };
1409
1410 template<>
1411 struct size_impl< aux::vector_tag<36> >
1412 {
1413     template< typename Vector > struct apply
1414         : long_<36>
1415     {
1416     };
1417 };
1418
1419 template<>
1420 struct O1_size_impl< aux::vector_tag<36> >
1421     : size_impl< aux::vector_tag<36> >
1422 {
1423 };
1424
1425 template<>
1426 struct clear_impl< aux::vector_tag<36> >
1427 {
1428     template< typename Vector > struct apply
1429     {
1430         typedef vector0<> type;
1431     };
1432 };
1433
1434 template<
1435       typename T0, typename T1, typename T2, typename T3, typename T4
1436     , typename T5, typename T6, typename T7, typename T8, typename T9
1437     , typename T10, typename T11, typename T12, typename T13, typename T14
1438     , typename T15, typename T16, typename T17, typename T18, typename T19
1439     , typename T20, typename T21, typename T22, typename T23, typename T24
1440     , typename T25, typename T26, typename T27, typename T28, typename T29
1441     , typename T30, typename T31, typename T32, typename T33, typename T34
1442     , typename T35, typename T36
1443     >
1444 struct vector37
1445 {
1446     typedef aux::vector_tag<37> tag;
1447     typedef vector37 type;
1448     typedef T0 item0;
1449     typedef T1 item1;
1450     typedef T2 item2;
1451     typedef T3 item3;
1452     typedef T4 item4;
1453     typedef T5 item5;
1454     typedef T6 item6;
1455     typedef T7 item7;
1456     typedef T8 item8;
1457     typedef T9 item9;
1458     typedef T10 item10;
1459     typedef T11 item11;
1460     typedef T12 item12;
1461     typedef T13 item13;
1462     typedef T14 item14;
1463     typedef T15 item15;
1464     typedef T16 item16;
1465     typedef T17 item17;
1466     typedef T18 item18;
1467     typedef T19 item19;
1468     typedef T20 item20;
1469     typedef T21 item21;
1470     typedef T22 item22;
1471     typedef T23 item23;
1472     typedef T24 item24;
1473     typedef T25 item25;
1474     typedef T26 item26;
1475     typedef T27 item27;
1476     typedef T28 item28;
1477     typedef T29 item29;
1478     typedef T30 item30;
1479     typedef T31 item31;
1480     typedef T32 item32;
1481     typedef T33 item33;
1482     typedef T34 item34;
1483     typedef T35 item35;
1484     typedef T36 item36;
1485     
1486
1487     typedef void_ item37;
1488     typedef T36 back;
1489     typedef v_iter< type,0 > begin;
1490     typedef v_iter< type,37 > end;
1491 };
1492
1493 template<>
1494 struct push_front_impl< aux::vector_tag<36> >
1495 {
1496     template< typename Vector, typename T > struct apply
1497     {
1498         typedef vector37<
1499               T
1500               ,
1501               typename Vector::item0, typename Vector::item1
1502             , typename Vector::item2, typename Vector::item3
1503             , typename Vector::item4, typename Vector::item5
1504             , typename Vector::item6, typename Vector::item7
1505             , typename Vector::item8, typename Vector::item9
1506             , typename Vector::item10, typename Vector::item11
1507             , typename Vector::item12, typename Vector::item13
1508             , typename Vector::item14, typename Vector::item15
1509             , typename Vector::item16, typename Vector::item17
1510             , typename Vector::item18, typename Vector::item19
1511             , typename Vector::item20, typename Vector::item21
1512             , typename Vector::item22, typename Vector::item23
1513             , typename Vector::item24, typename Vector::item25
1514             , typename Vector::item26, typename Vector::item27
1515             , typename Vector::item28, typename Vector::item29
1516             , typename Vector::item30, typename Vector::item31
1517             , typename Vector::item32, typename Vector::item33
1518             , typename Vector::item34, typename Vector::item35
1519             > type;
1520     };
1521 };
1522
1523 template<>
1524 struct pop_front_impl< aux::vector_tag<37> >
1525 {
1526     template< typename Vector > struct apply
1527     {
1528         typedef vector36<
1529               typename Vector::item1, typename Vector::item2
1530             , typename Vector::item3, typename Vector::item4
1531             , typename Vector::item5, typename Vector::item6
1532             , typename Vector::item7, typename Vector::item8
1533             , typename Vector::item9, typename Vector::item10
1534             , typename Vector::item11, typename Vector::item12
1535             , typename Vector::item13, typename Vector::item14
1536             , typename Vector::item15, typename Vector::item16
1537             , typename Vector::item17, typename Vector::item18
1538             , typename Vector::item19, typename Vector::item20
1539             , typename Vector::item21, typename Vector::item22
1540             , typename Vector::item23, typename Vector::item24
1541             , typename Vector::item25, typename Vector::item26
1542             , typename Vector::item27, typename Vector::item28
1543             , typename Vector::item29, typename Vector::item30
1544             , typename Vector::item31, typename Vector::item32
1545             , typename Vector::item33, typename Vector::item34
1546             , typename Vector::item35, typename Vector::item36
1547             > type;
1548     };
1549 };
1550
1551 template<>
1552 struct push_back_impl< aux::vector_tag<36> >
1553 {
1554     template< typename Vector, typename T > struct apply
1555     {
1556         typedef vector37<
1557               typename Vector::item0, typename Vector::item1
1558             , typename Vector::item2, typename Vector::item3
1559             , typename Vector::item4, typename Vector::item5
1560             , typename Vector::item6, typename Vector::item7
1561             , typename Vector::item8, typename Vector::item9
1562             , typename Vector::item10, typename Vector::item11
1563             , typename Vector::item12, typename Vector::item13
1564             , typename Vector::item14, typename Vector::item15
1565             , typename Vector::item16, typename Vector::item17
1566             , typename Vector::item18, typename Vector::item19
1567             , typename Vector::item20, typename Vector::item21
1568             , typename Vector::item22, typename Vector::item23
1569             , typename Vector::item24, typename Vector::item25
1570             , typename Vector::item26, typename Vector::item27
1571             , typename Vector::item28, typename Vector::item29
1572             , typename Vector::item30, typename Vector::item31
1573             , typename Vector::item32, typename Vector::item33
1574             , typename Vector::item34, typename Vector::item35
1575               ,
1576               T
1577             > type;
1578     };
1579 };
1580
1581 template<>
1582 struct pop_back_impl< aux::vector_tag<37> >
1583 {
1584     template< typename Vector > struct apply
1585     {
1586         typedef vector36<
1587               typename Vector::item0, typename Vector::item1
1588             , typename Vector::item2, typename Vector::item3
1589             , typename Vector::item4, typename Vector::item5
1590             , typename Vector::item6, typename Vector::item7
1591             , typename Vector::item8, typename Vector::item9
1592             , typename Vector::item10, typename Vector::item11
1593             , typename Vector::item12, typename Vector::item13
1594             , typename Vector::item14, typename Vector::item15
1595             , typename Vector::item16, typename Vector::item17
1596             , typename Vector::item18, typename Vector::item19
1597             , typename Vector::item20, typename Vector::item21
1598             , typename Vector::item22, typename Vector::item23
1599             , typename Vector::item24, typename Vector::item25
1600             , typename Vector::item26, typename Vector::item27
1601             , typename Vector::item28, typename Vector::item29
1602             , typename Vector::item30, typename Vector::item31
1603             , typename Vector::item32, typename Vector::item33
1604             , typename Vector::item34, typename Vector::item35
1605             > type;
1606     };
1607 };
1608
1609 namespace aux {
1610 template<> struct v_at_impl<37>
1611 {
1612     template< typename V_ > struct result_
1613     {
1614         typedef typename V_::item37 type;
1615     };
1616 };
1617
1618 }
1619
1620 template<>
1621 struct at_impl< aux::vector_tag<37> >
1622 {
1623     template< typename V_, typename N > struct apply
1624     {
1625         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
1626             ::template result_<V_>::type type;
1627     };
1628 };
1629
1630 template<>
1631 struct front_impl< aux::vector_tag<37> >
1632 {
1633     template< typename Vector > struct apply
1634     {
1635         typedef typename Vector::item0 type;
1636     };
1637 };
1638
1639 template<>
1640 struct back_impl< aux::vector_tag<37> >
1641 {
1642     template< typename Vector > struct apply
1643     {
1644         typedef typename Vector::back type;
1645     };
1646 };
1647
1648 template<>
1649 struct empty_impl< aux::vector_tag<37> >
1650 {
1651     template< typename Vector > struct apply
1652         : false_
1653     {
1654     };
1655 };
1656
1657 template<>
1658 struct size_impl< aux::vector_tag<37> >
1659 {
1660     template< typename Vector > struct apply
1661         : long_<37>
1662     {
1663     };
1664 };
1665
1666 template<>
1667 struct O1_size_impl< aux::vector_tag<37> >
1668     : size_impl< aux::vector_tag<37> >
1669 {
1670 };
1671
1672 template<>
1673 struct clear_impl< aux::vector_tag<37> >
1674 {
1675     template< typename Vector > struct apply
1676     {
1677         typedef vector0<> type;
1678     };
1679 };
1680
1681 template<
1682       typename T0, typename T1, typename T2, typename T3, typename T4
1683     , typename T5, typename T6, typename T7, typename T8, typename T9
1684     , typename T10, typename T11, typename T12, typename T13, typename T14
1685     , typename T15, typename T16, typename T17, typename T18, typename T19
1686     , typename T20, typename T21, typename T22, typename T23, typename T24
1687     , typename T25, typename T26, typename T27, typename T28, typename T29
1688     , typename T30, typename T31, typename T32, typename T33, typename T34
1689     , typename T35, typename T36, typename T37
1690     >
1691 struct vector38
1692 {
1693     typedef aux::vector_tag<38> tag;
1694     typedef vector38 type;
1695     typedef T0 item0;
1696     typedef T1 item1;
1697     typedef T2 item2;
1698     typedef T3 item3;
1699     typedef T4 item4;
1700     typedef T5 item5;
1701     typedef T6 item6;
1702     typedef T7 item7;
1703     typedef T8 item8;
1704     typedef T9 item9;
1705     typedef T10 item10;
1706     typedef T11 item11;
1707     typedef T12 item12;
1708     typedef T13 item13;
1709     typedef T14 item14;
1710     typedef T15 item15;
1711     typedef T16 item16;
1712     typedef T17 item17;
1713     typedef T18 item18;
1714     typedef T19 item19;
1715     typedef T20 item20;
1716     typedef T21 item21;
1717     typedef T22 item22;
1718     typedef T23 item23;
1719     typedef T24 item24;
1720     typedef T25 item25;
1721     typedef T26 item26;
1722     typedef T27 item27;
1723     typedef T28 item28;
1724     typedef T29 item29;
1725     typedef T30 item30;
1726     typedef T31 item31;
1727     typedef T32 item32;
1728     typedef T33 item33;
1729     typedef T34 item34;
1730     typedef T35 item35;
1731     typedef T36 item36;
1732     typedef T37 item37;
1733     
1734
1735     typedef void_ item38;
1736     typedef T37 back;
1737     typedef v_iter< type,0 > begin;
1738     typedef v_iter< type,38 > end;
1739 };
1740
1741 template<>
1742 struct push_front_impl< aux::vector_tag<37> >
1743 {
1744     template< typename Vector, typename T > struct apply
1745     {
1746         typedef vector38<
1747               T
1748               ,
1749               typename Vector::item0, typename Vector::item1
1750             , typename Vector::item2, typename Vector::item3
1751             , typename Vector::item4, typename Vector::item5
1752             , typename Vector::item6, typename Vector::item7
1753             , typename Vector::item8, typename Vector::item9
1754             , typename Vector::item10, typename Vector::item11
1755             , typename Vector::item12, typename Vector::item13
1756             , typename Vector::item14, typename Vector::item15
1757             , typename Vector::item16, typename Vector::item17
1758             , typename Vector::item18, typename Vector::item19
1759             , typename Vector::item20, typename Vector::item21
1760             , typename Vector::item22, typename Vector::item23
1761             , typename Vector::item24, typename Vector::item25
1762             , typename Vector::item26, typename Vector::item27
1763             , typename Vector::item28, typename Vector::item29
1764             , typename Vector::item30, typename Vector::item31
1765             , typename Vector::item32, typename Vector::item33
1766             , typename Vector::item34, typename Vector::item35
1767             , typename Vector::item36
1768             > type;
1769     };
1770 };
1771
1772 template<>
1773 struct pop_front_impl< aux::vector_tag<38> >
1774 {
1775     template< typename Vector > struct apply
1776     {
1777         typedef vector37<
1778               typename Vector::item1, typename Vector::item2
1779             , typename Vector::item3, typename Vector::item4
1780             , typename Vector::item5, typename Vector::item6
1781             , typename Vector::item7, typename Vector::item8
1782             , typename Vector::item9, typename Vector::item10
1783             , typename Vector::item11, typename Vector::item12
1784             , typename Vector::item13, typename Vector::item14
1785             , typename Vector::item15, typename Vector::item16
1786             , typename Vector::item17, typename Vector::item18
1787             , typename Vector::item19, typename Vector::item20
1788             , typename Vector::item21, typename Vector::item22
1789             , typename Vector::item23, typename Vector::item24
1790             , typename Vector::item25, typename Vector::item26
1791             , typename Vector::item27, typename Vector::item28
1792             , typename Vector::item29, typename Vector::item30
1793             , typename Vector::item31, typename Vector::item32
1794             , typename Vector::item33, typename Vector::item34
1795             , typename Vector::item35, typename Vector::item36
1796             , typename Vector::item37
1797             > type;
1798     };
1799 };
1800
1801 template<>
1802 struct push_back_impl< aux::vector_tag<37> >
1803 {
1804     template< typename Vector, typename T > struct apply
1805     {
1806         typedef vector38<
1807               typename Vector::item0, typename Vector::item1
1808             , typename Vector::item2, typename Vector::item3
1809             , typename Vector::item4, typename Vector::item5
1810             , typename Vector::item6, typename Vector::item7
1811             , typename Vector::item8, typename Vector::item9
1812             , typename Vector::item10, typename Vector::item11
1813             , typename Vector::item12, typename Vector::item13
1814             , typename Vector::item14, typename Vector::item15
1815             , typename Vector::item16, typename Vector::item17
1816             , typename Vector::item18, typename Vector::item19
1817             , typename Vector::item20, typename Vector::item21
1818             , typename Vector::item22, typename Vector::item23
1819             , typename Vector::item24, typename Vector::item25
1820             , typename Vector::item26, typename Vector::item27
1821             , typename Vector::item28, typename Vector::item29
1822             , typename Vector::item30, typename Vector::item31
1823             , typename Vector::item32, typename Vector::item33
1824             , typename Vector::item34, typename Vector::item35
1825             , typename Vector::item36
1826               ,
1827               T
1828             > type;
1829     };
1830 };
1831
1832 template<>
1833 struct pop_back_impl< aux::vector_tag<38> >
1834 {
1835     template< typename Vector > struct apply
1836     {
1837         typedef vector37<
1838               typename Vector::item0, typename Vector::item1
1839             , typename Vector::item2, typename Vector::item3
1840             , typename Vector::item4, typename Vector::item5
1841             , typename Vector::item6, typename Vector::item7
1842             , typename Vector::item8, typename Vector::item9
1843             , typename Vector::item10, typename Vector::item11
1844             , typename Vector::item12, typename Vector::item13
1845             , typename Vector::item14, typename Vector::item15
1846             , typename Vector::item16, typename Vector::item17
1847             , typename Vector::item18, typename Vector::item19
1848             , typename Vector::item20, typename Vector::item21
1849             , typename Vector::item22, typename Vector::item23
1850             , typename Vector::item24, typename Vector::item25
1851             , typename Vector::item26, typename Vector::item27
1852             , typename Vector::item28, typename Vector::item29
1853             , typename Vector::item30, typename Vector::item31
1854             , typename Vector::item32, typename Vector::item33
1855             , typename Vector::item34, typename Vector::item35
1856             , typename Vector::item36
1857             > type;
1858     };
1859 };
1860
1861 namespace aux {
1862 template<> struct v_at_impl<38>
1863 {
1864     template< typename V_ > struct result_
1865     {
1866         typedef typename V_::item38 type;
1867     };
1868 };
1869
1870 }
1871
1872 template<>
1873 struct at_impl< aux::vector_tag<38> >
1874 {
1875     template< typename V_, typename N > struct apply
1876     {
1877         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
1878             ::template result_<V_>::type type;
1879     };
1880 };
1881
1882 template<>
1883 struct front_impl< aux::vector_tag<38> >
1884 {
1885     template< typename Vector > struct apply
1886     {
1887         typedef typename Vector::item0 type;
1888     };
1889 };
1890
1891 template<>
1892 struct back_impl< aux::vector_tag<38> >
1893 {
1894     template< typename Vector > struct apply
1895     {
1896         typedef typename Vector::back type;
1897     };
1898 };
1899
1900 template<>
1901 struct empty_impl< aux::vector_tag<38> >
1902 {
1903     template< typename Vector > struct apply
1904         : false_
1905     {
1906     };
1907 };
1908
1909 template<>
1910 struct size_impl< aux::vector_tag<38> >
1911 {
1912     template< typename Vector > struct apply
1913         : long_<38>
1914     {
1915     };
1916 };
1917
1918 template<>
1919 struct O1_size_impl< aux::vector_tag<38> >
1920     : size_impl< aux::vector_tag<38> >
1921 {
1922 };
1923
1924 template<>
1925 struct clear_impl< aux::vector_tag<38> >
1926 {
1927     template< typename Vector > struct apply
1928     {
1929         typedef vector0<> type;
1930     };
1931 };
1932
1933 template<
1934       typename T0, typename T1, typename T2, typename T3, typename T4
1935     , typename T5, typename T6, typename T7, typename T8, typename T9
1936     , typename T10, typename T11, typename T12, typename T13, typename T14
1937     , typename T15, typename T16, typename T17, typename T18, typename T19
1938     , typename T20, typename T21, typename T22, typename T23, typename T24
1939     , typename T25, typename T26, typename T27, typename T28, typename T29
1940     , typename T30, typename T31, typename T32, typename T33, typename T34
1941     , typename T35, typename T36, typename T37, typename T38
1942     >
1943 struct vector39
1944 {
1945     typedef aux::vector_tag<39> tag;
1946     typedef vector39 type;
1947     typedef T0 item0;
1948     typedef T1 item1;
1949     typedef T2 item2;
1950     typedef T3 item3;
1951     typedef T4 item4;
1952     typedef T5 item5;
1953     typedef T6 item6;
1954     typedef T7 item7;
1955     typedef T8 item8;
1956     typedef T9 item9;
1957     typedef T10 item10;
1958     typedef T11 item11;
1959     typedef T12 item12;
1960     typedef T13 item13;
1961     typedef T14 item14;
1962     typedef T15 item15;
1963     typedef T16 item16;
1964     typedef T17 item17;
1965     typedef T18 item18;
1966     typedef T19 item19;
1967     typedef T20 item20;
1968     typedef T21 item21;
1969     typedef T22 item22;
1970     typedef T23 item23;
1971     typedef T24 item24;
1972     typedef T25 item25;
1973     typedef T26 item26;
1974     typedef T27 item27;
1975     typedef T28 item28;
1976     typedef T29 item29;
1977     typedef T30 item30;
1978     typedef T31 item31;
1979     typedef T32 item32;
1980     typedef T33 item33;
1981     typedef T34 item34;
1982     typedef T35 item35;
1983     typedef T36 item36;
1984     typedef T37 item37;
1985     typedef T38 item38;
1986     
1987
1988     typedef void_ item39;
1989     typedef T38 back;
1990     typedef v_iter< type,0 > begin;
1991     typedef v_iter< type,39 > end;
1992 };
1993
1994 template<>
1995 struct push_front_impl< aux::vector_tag<38> >
1996 {
1997     template< typename Vector, typename T > struct apply
1998     {
1999         typedef vector39<
2000               T
2001               ,
2002               typename Vector::item0, typename Vector::item1
2003             , typename Vector::item2, typename Vector::item3
2004             , typename Vector::item4, typename Vector::item5
2005             , typename Vector::item6, typename Vector::item7
2006             , typename Vector::item8, typename Vector::item9
2007             , typename Vector::item10, typename Vector::item11
2008             , typename Vector::item12, typename Vector::item13
2009             , typename Vector::item14, typename Vector::item15
2010             , typename Vector::item16, typename Vector::item17
2011             , typename Vector::item18, typename Vector::item19
2012             , typename Vector::item20, typename Vector::item21
2013             , typename Vector::item22, typename Vector::item23
2014             , typename Vector::item24, typename Vector::item25
2015             , typename Vector::item26, typename Vector::item27
2016             , typename Vector::item28, typename Vector::item29
2017             , typename Vector::item30, typename Vector::item31
2018             , typename Vector::item32, typename Vector::item33
2019             , typename Vector::item34, typename Vector::item35
2020             , typename Vector::item36, typename Vector::item37
2021             > type;
2022     };
2023 };
2024
2025 template<>
2026 struct pop_front_impl< aux::vector_tag<39> >
2027 {
2028     template< typename Vector > struct apply
2029     {
2030         typedef vector38<
2031               typename Vector::item1, typename Vector::item2
2032             , typename Vector::item3, typename Vector::item4
2033             , typename Vector::item5, typename Vector::item6
2034             , typename Vector::item7, typename Vector::item8
2035             , typename Vector::item9, typename Vector::item10
2036             , typename Vector::item11, typename Vector::item12
2037             , typename Vector::item13, typename Vector::item14
2038             , typename Vector::item15, typename Vector::item16
2039             , typename Vector::item17, typename Vector::item18
2040             , typename Vector::item19, typename Vector::item20
2041             , typename Vector::item21, typename Vector::item22
2042             , typename Vector::item23, typename Vector::item24
2043             , typename Vector::item25, typename Vector::item26
2044             , typename Vector::item27, typename Vector::item28
2045             , typename Vector::item29, typename Vector::item30
2046             , typename Vector::item31, typename Vector::item32
2047             , typename Vector::item33, typename Vector::item34
2048             , typename Vector::item35, typename Vector::item36
2049             , typename Vector::item37, typename Vector::item38
2050             > type;
2051     };
2052 };
2053
2054 template<>
2055 struct push_back_impl< aux::vector_tag<38> >
2056 {
2057     template< typename Vector, typename T > struct apply
2058     {
2059         typedef vector39<
2060               typename Vector::item0, typename Vector::item1
2061             , typename Vector::item2, typename Vector::item3
2062             , typename Vector::item4, typename Vector::item5
2063             , typename Vector::item6, typename Vector::item7
2064             , typename Vector::item8, typename Vector::item9
2065             , typename Vector::item10, typename Vector::item11
2066             , typename Vector::item12, typename Vector::item13
2067             , typename Vector::item14, typename Vector::item15
2068             , typename Vector::item16, typename Vector::item17
2069             , typename Vector::item18, typename Vector::item19
2070             , typename Vector::item20, typename Vector::item21
2071             , typename Vector::item22, typename Vector::item23
2072             , typename Vector::item24, typename Vector::item25
2073             , typename Vector::item26, typename Vector::item27
2074             , typename Vector::item28, typename Vector::item29
2075             , typename Vector::item30, typename Vector::item31
2076             , typename Vector::item32, typename Vector::item33
2077             , typename Vector::item34, typename Vector::item35
2078             , typename Vector::item36, typename Vector::item37
2079               ,
2080               T
2081             > type;
2082     };
2083 };
2084
2085 template<>
2086 struct pop_back_impl< aux::vector_tag<39> >
2087 {
2088     template< typename Vector > struct apply
2089     {
2090         typedef vector38<
2091               typename Vector::item0, typename Vector::item1
2092             , typename Vector::item2, typename Vector::item3
2093             , typename Vector::item4, typename Vector::item5
2094             , typename Vector::item6, typename Vector::item7
2095             , typename Vector::item8, typename Vector::item9
2096             , typename Vector::item10, typename Vector::item11
2097             , typename Vector::item12, typename Vector::item13
2098             , typename Vector::item14, typename Vector::item15
2099             , typename Vector::item16, typename Vector::item17
2100             , typename Vector::item18, typename Vector::item19
2101             , typename Vector::item20, typename Vector::item21
2102             , typename Vector::item22, typename Vector::item23
2103             , typename Vector::item24, typename Vector::item25
2104             , typename Vector::item26, typename Vector::item27
2105             , typename Vector::item28, typename Vector::item29
2106             , typename Vector::item30, typename Vector::item31
2107             , typename Vector::item32, typename Vector::item33
2108             , typename Vector::item34, typename Vector::item35
2109             , typename Vector::item36, typename Vector::item37
2110             > type;
2111     };
2112 };
2113
2114 namespace aux {
2115 template<> struct v_at_impl<39>
2116 {
2117     template< typename V_ > struct result_
2118     {
2119         typedef typename V_::item39 type;
2120     };
2121 };
2122
2123 }
2124
2125 template<>
2126 struct at_impl< aux::vector_tag<39> >
2127 {
2128     template< typename V_, typename N > struct apply
2129     {
2130         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
2131             ::template result_<V_>::type type;
2132     };
2133 };
2134
2135 template<>
2136 struct front_impl< aux::vector_tag<39> >
2137 {
2138     template< typename Vector > struct apply
2139     {
2140         typedef typename Vector::item0 type;
2141     };
2142 };
2143
2144 template<>
2145 struct back_impl< aux::vector_tag<39> >
2146 {
2147     template< typename Vector > struct apply
2148     {
2149         typedef typename Vector::back type;
2150     };
2151 };
2152
2153 template<>
2154 struct empty_impl< aux::vector_tag<39> >
2155 {
2156     template< typename Vector > struct apply
2157         : false_
2158     {
2159     };
2160 };
2161
2162 template<>
2163 struct size_impl< aux::vector_tag<39> >
2164 {
2165     template< typename Vector > struct apply
2166         : long_<39>
2167     {
2168     };
2169 };
2170
2171 template<>
2172 struct O1_size_impl< aux::vector_tag<39> >
2173     : size_impl< aux::vector_tag<39> >
2174 {
2175 };
2176
2177 template<>
2178 struct clear_impl< aux::vector_tag<39> >
2179 {
2180     template< typename Vector > struct apply
2181     {
2182         typedef vector0<> type;
2183     };
2184 };
2185
2186 template<
2187       typename T0, typename T1, typename T2, typename T3, typename T4
2188     , typename T5, typename T6, typename T7, typename T8, typename T9
2189     , typename T10, typename T11, typename T12, typename T13, typename T14
2190     , typename T15, typename T16, typename T17, typename T18, typename T19
2191     , typename T20, typename T21, typename T22, typename T23, typename T24
2192     , typename T25, typename T26, typename T27, typename T28, typename T29
2193     , typename T30, typename T31, typename T32, typename T33, typename T34
2194     , typename T35, typename T36, typename T37, typename T38, typename T39
2195     >
2196 struct vector40
2197 {
2198     typedef aux::vector_tag<40> tag;
2199     typedef vector40 type;
2200     typedef T0 item0;
2201     typedef T1 item1;
2202     typedef T2 item2;
2203     typedef T3 item3;
2204     typedef T4 item4;
2205     typedef T5 item5;
2206     typedef T6 item6;
2207     typedef T7 item7;
2208     typedef T8 item8;
2209     typedef T9 item9;
2210     typedef T10 item10;
2211     typedef T11 item11;
2212     typedef T12 item12;
2213     typedef T13 item13;
2214     typedef T14 item14;
2215     typedef T15 item15;
2216     typedef T16 item16;
2217     typedef T17 item17;
2218     typedef T18 item18;
2219     typedef T19 item19;
2220     typedef T20 item20;
2221     typedef T21 item21;
2222     typedef T22 item22;
2223     typedef T23 item23;
2224     typedef T24 item24;
2225     typedef T25 item25;
2226     typedef T26 item26;
2227     typedef T27 item27;
2228     typedef T28 item28;
2229     typedef T29 item29;
2230     typedef T30 item30;
2231     typedef T31 item31;
2232     typedef T32 item32;
2233     typedef T33 item33;
2234     typedef T34 item34;
2235     typedef T35 item35;
2236     typedef T36 item36;
2237     typedef T37 item37;
2238     typedef T38 item38;
2239     typedef T39 item39;
2240     
2241
2242     typedef void_ item40;
2243     typedef T39 back;
2244     typedef v_iter< type,0 > begin;
2245     typedef v_iter< type,40 > end;
2246 };
2247
2248 template<>
2249 struct push_front_impl< aux::vector_tag<39> >
2250 {
2251     template< typename Vector, typename T > struct apply
2252     {
2253         typedef vector40<
2254               T
2255               ,
2256               typename Vector::item0, typename Vector::item1
2257             , typename Vector::item2, typename Vector::item3
2258             , typename Vector::item4, typename Vector::item5
2259             , typename Vector::item6, typename Vector::item7
2260             , typename Vector::item8, typename Vector::item9
2261             , typename Vector::item10, typename Vector::item11
2262             , typename Vector::item12, typename Vector::item13
2263             , typename Vector::item14, typename Vector::item15
2264             , typename Vector::item16, typename Vector::item17
2265             , typename Vector::item18, typename Vector::item19
2266             , typename Vector::item20, typename Vector::item21
2267             , typename Vector::item22, typename Vector::item23
2268             , typename Vector::item24, typename Vector::item25
2269             , typename Vector::item26, typename Vector::item27
2270             , typename Vector::item28, typename Vector::item29
2271             , typename Vector::item30, typename Vector::item31
2272             , typename Vector::item32, typename Vector::item33
2273             , typename Vector::item34, typename Vector::item35
2274             , typename Vector::item36, typename Vector::item37
2275             , typename Vector::item38
2276             > type;
2277     };
2278 };
2279
2280 template<>
2281 struct pop_front_impl< aux::vector_tag<40> >
2282 {
2283     template< typename Vector > struct apply
2284     {
2285         typedef vector39<
2286               typename Vector::item1, typename Vector::item2
2287             , typename Vector::item3, typename Vector::item4
2288             , typename Vector::item5, typename Vector::item6
2289             , typename Vector::item7, typename Vector::item8
2290             , typename Vector::item9, typename Vector::item10
2291             , typename Vector::item11, typename Vector::item12
2292             , typename Vector::item13, typename Vector::item14
2293             , typename Vector::item15, typename Vector::item16
2294             , typename Vector::item17, typename Vector::item18
2295             , typename Vector::item19, typename Vector::item20
2296             , typename Vector::item21, typename Vector::item22
2297             , typename Vector::item23, typename Vector::item24
2298             , typename Vector::item25, typename Vector::item26
2299             , typename Vector::item27, typename Vector::item28
2300             , typename Vector::item29, typename Vector::item30
2301             , typename Vector::item31, typename Vector::item32
2302             , typename Vector::item33, typename Vector::item34
2303             , typename Vector::item35, typename Vector::item36
2304             , typename Vector::item37, typename Vector::item38
2305             , typename Vector::item39
2306             > type;
2307     };
2308 };
2309
2310 template<>
2311 struct push_back_impl< aux::vector_tag<39> >
2312 {
2313     template< typename Vector, typename T > struct apply
2314     {
2315         typedef vector40<
2316               typename Vector::item0, typename Vector::item1
2317             , typename Vector::item2, typename Vector::item3
2318             , typename Vector::item4, typename Vector::item5
2319             , typename Vector::item6, typename Vector::item7
2320             , typename Vector::item8, typename Vector::item9
2321             , typename Vector::item10, typename Vector::item11
2322             , typename Vector::item12, typename Vector::item13
2323             , typename Vector::item14, typename Vector::item15
2324             , typename Vector::item16, typename Vector::item17
2325             , typename Vector::item18, typename Vector::item19
2326             , typename Vector::item20, typename Vector::item21
2327             , typename Vector::item22, typename Vector::item23
2328             , typename Vector::item24, typename Vector::item25
2329             , typename Vector::item26, typename Vector::item27
2330             , typename Vector::item28, typename Vector::item29
2331             , typename Vector::item30, typename Vector::item31
2332             , typename Vector::item32, typename Vector::item33
2333             , typename Vector::item34, typename Vector::item35
2334             , typename Vector::item36, typename Vector::item37
2335             , typename Vector::item38
2336               ,
2337               T
2338             > type;
2339     };
2340 };
2341
2342 template<>
2343 struct pop_back_impl< aux::vector_tag<40> >
2344 {
2345     template< typename Vector > struct apply
2346     {
2347         typedef vector39<
2348               typename Vector::item0, typename Vector::item1
2349             , typename Vector::item2, typename Vector::item3
2350             , typename Vector::item4, typename Vector::item5
2351             , typename Vector::item6, typename Vector::item7
2352             , typename Vector::item8, typename Vector::item9
2353             , typename Vector::item10, typename Vector::item11
2354             , typename Vector::item12, typename Vector::item13
2355             , typename Vector::item14, typename Vector::item15
2356             , typename Vector::item16, typename Vector::item17
2357             , typename Vector::item18, typename Vector::item19
2358             , typename Vector::item20, typename Vector::item21
2359             , typename Vector::item22, typename Vector::item23
2360             , typename Vector::item24, typename Vector::item25
2361             , typename Vector::item26, typename Vector::item27
2362             , typename Vector::item28, typename Vector::item29
2363             , typename Vector::item30, typename Vector::item31
2364             , typename Vector::item32, typename Vector::item33
2365             , typename Vector::item34, typename Vector::item35
2366             , typename Vector::item36, typename Vector::item37
2367             , typename Vector::item38
2368             > type;
2369     };
2370 };
2371
2372 namespace aux {
2373 template<> struct v_at_impl<40>
2374 {
2375     template< typename V_ > struct result_
2376     {
2377         typedef typename V_::item40 type;
2378     };
2379 };
2380
2381 }
2382
2383 template<>
2384 struct at_impl< aux::vector_tag<40> >
2385 {
2386     template< typename V_, typename N > struct apply
2387     {
2388         typedef typename aux::v_at_impl<BOOST_MPL_AUX_VALUE_WKND(N)::value>
2389             ::template result_<V_>::type type;
2390     };
2391 };
2392
2393 template<>
2394 struct front_impl< aux::vector_tag<40> >
2395 {
2396     template< typename Vector > struct apply
2397     {
2398         typedef typename Vector::item0 type;
2399     };
2400 };
2401
2402 template<>
2403 struct back_impl< aux::vector_tag<40> >
2404 {
2405     template< typename Vector > struct apply
2406     {
2407         typedef typename Vector::back type;
2408     };
2409 };
2410
2411 template<>
2412 struct empty_impl< aux::vector_tag<40> >
2413 {
2414     template< typename Vector > struct apply
2415         : false_
2416     {
2417     };
2418 };
2419
2420 template<>
2421 struct size_impl< aux::vector_tag<40> >
2422 {
2423     template< typename Vector > struct apply
2424         : long_<40>
2425     {
2426     };
2427 };
2428
2429 template<>
2430 struct O1_size_impl< aux::vector_tag<40> >
2431     : size_impl< aux::vector_tag<40> >
2432 {
2433 };
2434
2435 template<>
2436 struct clear_impl< aux::vector_tag<40> >
2437 {
2438     template< typename Vector > struct apply
2439     {
2440         typedef vector0<> type;
2441     };
2442 };
2443
2444 }}