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