Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:41:50

0001 
0002 // Copyright Aleksey Gurtovoy 2000-2004
0003 //
0004 // Distributed under the Boost Software License, Version 1.0. 
0005 // (See accompanying file LICENSE_1_0.txt or copy at 
0006 // http://www.boost.org/LICENSE_1_0.txt)
0007 //
0008 
0009 // Preprocessed version of "boost/mpl/vector/vector20.hpp" header
0010 // -- DO NOT modify by hand!
0011 
0012 namespace boost { namespace mpl {
0013 
0014 template<
0015       typename T0, typename T1, typename T2, typename T3, typename T4
0016     , typename T5, typename T6, typename T7, typename T8, typename T9
0017     , typename T10
0018     >
0019 struct vector11
0020 {
0021     typedef aux::vector_tag<11> tag;
0022     typedef vector11 type;
0023     typedef T0 item0;
0024     typedef T1 item1;
0025     typedef T2 item2;
0026     typedef T3 item3;
0027     typedef T4 item4;
0028     typedef T5 item5;
0029     typedef T6 item6;
0030     typedef T7 item7;
0031     typedef T8 item8;
0032     typedef T9 item9;
0033     typedef T10 item10;
0034     
0035 
0036     typedef void_ item11;
0037     typedef T10 back;
0038     typedef v_iter< type,0 > begin;
0039     typedef v_iter< type,11 > end;
0040 };
0041 
0042 template<>
0043 struct push_front_impl< aux::vector_tag<10> >
0044 {
0045     template< typename Vector, typename T > struct apply
0046     {
0047         typedef vector11<
0048               T
0049               ,
0050               typename Vector::item0, typename Vector::item1
0051             , typename Vector::item2, typename Vector::item3
0052             , typename Vector::item4, typename Vector::item5
0053             , typename Vector::item6, typename Vector::item7
0054             , typename Vector::item8, typename Vector::item9
0055             > type;
0056     };
0057 };
0058 
0059 template<>
0060 struct pop_front_impl< aux::vector_tag<11> >
0061 {
0062     template< typename Vector > struct apply
0063     {
0064         typedef vector10<
0065               typename Vector::item1, typename Vector::item2
0066             , typename Vector::item3, typename Vector::item4
0067             , typename Vector::item5, typename Vector::item6
0068             , typename Vector::item7, typename Vector::item8
0069             , typename Vector::item9, typename Vector::item10
0070             > type;
0071     };
0072 };
0073 
0074 template<>
0075 struct push_back_impl< aux::vector_tag<10> >
0076 {
0077     template< typename Vector, typename T > struct apply
0078     {
0079         typedef vector11<
0080               typename Vector::item0, typename Vector::item1
0081             , typename Vector::item2, typename Vector::item3
0082             , typename Vector::item4, typename Vector::item5
0083             , typename Vector::item6, typename Vector::item7
0084             , typename Vector::item8, typename Vector::item9
0085               ,
0086               T
0087             > type;
0088     };
0089 };
0090 
0091 template<>
0092 struct pop_back_impl< aux::vector_tag<11> >
0093 {
0094     template< typename Vector > struct apply
0095     {
0096         typedef vector10<
0097               typename Vector::item0, typename Vector::item1
0098             , typename Vector::item2, typename Vector::item3
0099             , typename Vector::item4, typename Vector::item5
0100             , typename Vector::item6, typename Vector::item7
0101             , typename Vector::item8, typename Vector::item9
0102             > type;
0103     };
0104 };
0105 
0106 template< typename V >
0107 struct v_at< V,11 >
0108 {
0109     typedef typename V::item11 type;
0110 };
0111 
0112 template<
0113       typename T0, typename T1, typename T2, typename T3, typename T4
0114     , typename T5, typename T6, typename T7, typename T8, typename T9
0115     , typename T10, typename T11
0116     >
0117 struct vector12
0118 {
0119     typedef aux::vector_tag<12> tag;
0120     typedef vector12 type;
0121     typedef T0 item0;
0122     typedef T1 item1;
0123     typedef T2 item2;
0124     typedef T3 item3;
0125     typedef T4 item4;
0126     typedef T5 item5;
0127     typedef T6 item6;
0128     typedef T7 item7;
0129     typedef T8 item8;
0130     typedef T9 item9;
0131     typedef T10 item10;
0132     typedef T11 item11;
0133     
0134 
0135     typedef void_ item12;
0136     typedef T11 back;
0137     typedef v_iter< type,0 > begin;
0138     typedef v_iter< type,12 > end;
0139 };
0140 
0141 template<>
0142 struct push_front_impl< aux::vector_tag<11> >
0143 {
0144     template< typename Vector, typename T > struct apply
0145     {
0146         typedef vector12<
0147               T
0148               ,
0149               typename Vector::item0, typename Vector::item1
0150             , typename Vector::item2, typename Vector::item3
0151             , typename Vector::item4, typename Vector::item5
0152             , typename Vector::item6, typename Vector::item7
0153             , typename Vector::item8, typename Vector::item9
0154             , typename Vector::item10
0155             > type;
0156     };
0157 };
0158 
0159 template<>
0160 struct pop_front_impl< aux::vector_tag<12> >
0161 {
0162     template< typename Vector > struct apply
0163     {
0164         typedef vector11<
0165               typename Vector::item1, typename Vector::item2
0166             , typename Vector::item3, typename Vector::item4
0167             , typename Vector::item5, typename Vector::item6
0168             , typename Vector::item7, typename Vector::item8
0169             , typename Vector::item9, typename Vector::item10
0170             , typename Vector::item11
0171             > type;
0172     };
0173 };
0174 
0175 template<>
0176 struct push_back_impl< aux::vector_tag<11> >
0177 {
0178     template< typename Vector, typename T > struct apply
0179     {
0180         typedef vector12<
0181               typename Vector::item0, typename Vector::item1
0182             , typename Vector::item2, typename Vector::item3
0183             , typename Vector::item4, typename Vector::item5
0184             , typename Vector::item6, typename Vector::item7
0185             , typename Vector::item8, typename Vector::item9
0186             , typename Vector::item10
0187               ,
0188               T
0189             > type;
0190     };
0191 };
0192 
0193 template<>
0194 struct pop_back_impl< aux::vector_tag<12> >
0195 {
0196     template< typename Vector > struct apply
0197     {
0198         typedef vector11<
0199               typename Vector::item0, typename Vector::item1
0200             , typename Vector::item2, typename Vector::item3
0201             , typename Vector::item4, typename Vector::item5
0202             , typename Vector::item6, typename Vector::item7
0203             , typename Vector::item8, typename Vector::item9
0204             , typename Vector::item10
0205             > type;
0206     };
0207 };
0208 
0209 template< typename V >
0210 struct v_at< V,12 >
0211 {
0212     typedef typename V::item12 type;
0213 };
0214 
0215 template<
0216       typename T0, typename T1, typename T2, typename T3, typename T4
0217     , typename T5, typename T6, typename T7, typename T8, typename T9
0218     , typename T10, typename T11, typename T12
0219     >
0220 struct vector13
0221 {
0222     typedef aux::vector_tag<13> tag;
0223     typedef vector13 type;
0224     typedef T0 item0;
0225     typedef T1 item1;
0226     typedef T2 item2;
0227     typedef T3 item3;
0228     typedef T4 item4;
0229     typedef T5 item5;
0230     typedef T6 item6;
0231     typedef T7 item7;
0232     typedef T8 item8;
0233     typedef T9 item9;
0234     typedef T10 item10;
0235     typedef T11 item11;
0236     typedef T12 item12;
0237     
0238 
0239     typedef void_ item13;
0240     typedef T12 back;
0241     typedef v_iter< type,0 > begin;
0242     typedef v_iter< type,13 > end;
0243 };
0244 
0245 template<>
0246 struct push_front_impl< aux::vector_tag<12> >
0247 {
0248     template< typename Vector, typename T > struct apply
0249     {
0250         typedef vector13<
0251               T
0252               ,
0253               typename Vector::item0, typename Vector::item1
0254             , typename Vector::item2, typename Vector::item3
0255             , typename Vector::item4, typename Vector::item5
0256             , typename Vector::item6, typename Vector::item7
0257             , typename Vector::item8, typename Vector::item9
0258             , typename Vector::item10, typename Vector::item11
0259             > type;
0260     };
0261 };
0262 
0263 template<>
0264 struct pop_front_impl< aux::vector_tag<13> >
0265 {
0266     template< typename Vector > struct apply
0267     {
0268         typedef vector12<
0269               typename Vector::item1, typename Vector::item2
0270             , typename Vector::item3, typename Vector::item4
0271             , typename Vector::item5, typename Vector::item6
0272             , typename Vector::item7, typename Vector::item8
0273             , typename Vector::item9, typename Vector::item10
0274             , typename Vector::item11, typename Vector::item12
0275             > type;
0276     };
0277 };
0278 
0279 template<>
0280 struct push_back_impl< aux::vector_tag<12> >
0281 {
0282     template< typename Vector, typename T > struct apply
0283     {
0284         typedef vector13<
0285               typename Vector::item0, typename Vector::item1
0286             , typename Vector::item2, typename Vector::item3
0287             , typename Vector::item4, typename Vector::item5
0288             , typename Vector::item6, typename Vector::item7
0289             , typename Vector::item8, typename Vector::item9
0290             , typename Vector::item10, typename Vector::item11
0291               ,
0292               T
0293             > type;
0294     };
0295 };
0296 
0297 template<>
0298 struct pop_back_impl< aux::vector_tag<13> >
0299 {
0300     template< typename Vector > struct apply
0301     {
0302         typedef vector12<
0303               typename Vector::item0, typename Vector::item1
0304             , typename Vector::item2, typename Vector::item3
0305             , typename Vector::item4, typename Vector::item5
0306             , typename Vector::item6, typename Vector::item7
0307             , typename Vector::item8, typename Vector::item9
0308             , typename Vector::item10, typename Vector::item11
0309             > type;
0310     };
0311 };
0312 
0313 template< typename V >
0314 struct v_at< V,13 >
0315 {
0316     typedef typename V::item13 type;
0317 };
0318 
0319 template<
0320       typename T0, typename T1, typename T2, typename T3, typename T4
0321     , typename T5, typename T6, typename T7, typename T8, typename T9
0322     , typename T10, typename T11, typename T12, typename T13
0323     >
0324 struct vector14
0325 {
0326     typedef aux::vector_tag<14> tag;
0327     typedef vector14 type;
0328     typedef T0 item0;
0329     typedef T1 item1;
0330     typedef T2 item2;
0331     typedef T3 item3;
0332     typedef T4 item4;
0333     typedef T5 item5;
0334     typedef T6 item6;
0335     typedef T7 item7;
0336     typedef T8 item8;
0337     typedef T9 item9;
0338     typedef T10 item10;
0339     typedef T11 item11;
0340     typedef T12 item12;
0341     typedef T13 item13;
0342     
0343 
0344     typedef void_ item14;
0345     typedef T13 back;
0346     typedef v_iter< type,0 > begin;
0347     typedef v_iter< type,14 > end;
0348 };
0349 
0350 template<>
0351 struct push_front_impl< aux::vector_tag<13> >
0352 {
0353     template< typename Vector, typename T > struct apply
0354     {
0355         typedef vector14<
0356               T
0357               ,
0358               typename Vector::item0, typename Vector::item1
0359             , typename Vector::item2, typename Vector::item3
0360             , typename Vector::item4, typename Vector::item5
0361             , typename Vector::item6, typename Vector::item7
0362             , typename Vector::item8, typename Vector::item9
0363             , typename Vector::item10, typename Vector::item11
0364             , typename Vector::item12
0365             > type;
0366     };
0367 };
0368 
0369 template<>
0370 struct pop_front_impl< aux::vector_tag<14> >
0371 {
0372     template< typename Vector > struct apply
0373     {
0374         typedef vector13<
0375               typename Vector::item1, typename Vector::item2
0376             , typename Vector::item3, typename Vector::item4
0377             , typename Vector::item5, typename Vector::item6
0378             , typename Vector::item7, typename Vector::item8
0379             , typename Vector::item9, typename Vector::item10
0380             , typename Vector::item11, typename Vector::item12
0381             , typename Vector::item13
0382             > type;
0383     };
0384 };
0385 
0386 template<>
0387 struct push_back_impl< aux::vector_tag<13> >
0388 {
0389     template< typename Vector, typename T > struct apply
0390     {
0391         typedef vector14<
0392               typename Vector::item0, typename Vector::item1
0393             , typename Vector::item2, typename Vector::item3
0394             , typename Vector::item4, typename Vector::item5
0395             , typename Vector::item6, typename Vector::item7
0396             , typename Vector::item8, typename Vector::item9
0397             , typename Vector::item10, typename Vector::item11
0398             , typename Vector::item12
0399               ,
0400               T
0401             > type;
0402     };
0403 };
0404 
0405 template<>
0406 struct pop_back_impl< aux::vector_tag<14> >
0407 {
0408     template< typename Vector > struct apply
0409     {
0410         typedef vector13<
0411               typename Vector::item0, typename Vector::item1
0412             , typename Vector::item2, typename Vector::item3
0413             , typename Vector::item4, typename Vector::item5
0414             , typename Vector::item6, typename Vector::item7
0415             , typename Vector::item8, typename Vector::item9
0416             , typename Vector::item10, typename Vector::item11
0417             , typename Vector::item12
0418             > type;
0419     };
0420 };
0421 
0422 template< typename V >
0423 struct v_at< V,14 >
0424 {
0425     typedef typename V::item14 type;
0426 };
0427 
0428 template<
0429       typename T0, typename T1, typename T2, typename T3, typename T4
0430     , typename T5, typename T6, typename T7, typename T8, typename T9
0431     , typename T10, typename T11, typename T12, typename T13, typename T14
0432     >
0433 struct vector15
0434 {
0435     typedef aux::vector_tag<15> tag;
0436     typedef vector15 type;
0437     typedef T0 item0;
0438     typedef T1 item1;
0439     typedef T2 item2;
0440     typedef T3 item3;
0441     typedef T4 item4;
0442     typedef T5 item5;
0443     typedef T6 item6;
0444     typedef T7 item7;
0445     typedef T8 item8;
0446     typedef T9 item9;
0447     typedef T10 item10;
0448     typedef T11 item11;
0449     typedef T12 item12;
0450     typedef T13 item13;
0451     typedef T14 item14;
0452     
0453 
0454     typedef void_ item15;
0455     typedef T14 back;
0456     typedef v_iter< type,0 > begin;
0457     typedef v_iter< type,15 > end;
0458 };
0459 
0460 template<>
0461 struct push_front_impl< aux::vector_tag<14> >
0462 {
0463     template< typename Vector, typename T > struct apply
0464     {
0465         typedef vector15<
0466               T
0467               ,
0468               typename Vector::item0, typename Vector::item1
0469             , typename Vector::item2, typename Vector::item3
0470             , typename Vector::item4, typename Vector::item5
0471             , typename Vector::item6, typename Vector::item7
0472             , typename Vector::item8, typename Vector::item9
0473             , typename Vector::item10, typename Vector::item11
0474             , typename Vector::item12, typename Vector::item13
0475             > type;
0476     };
0477 };
0478 
0479 template<>
0480 struct pop_front_impl< aux::vector_tag<15> >
0481 {
0482     template< typename Vector > struct apply
0483     {
0484         typedef vector14<
0485               typename Vector::item1, typename Vector::item2
0486             , typename Vector::item3, typename Vector::item4
0487             , typename Vector::item5, typename Vector::item6
0488             , typename Vector::item7, typename Vector::item8
0489             , typename Vector::item9, typename Vector::item10
0490             , typename Vector::item11, typename Vector::item12
0491             , typename Vector::item13, typename Vector::item14
0492             > type;
0493     };
0494 };
0495 
0496 template<>
0497 struct push_back_impl< aux::vector_tag<14> >
0498 {
0499     template< typename Vector, typename T > struct apply
0500     {
0501         typedef vector15<
0502               typename Vector::item0, typename Vector::item1
0503             , typename Vector::item2, typename Vector::item3
0504             , typename Vector::item4, typename Vector::item5
0505             , typename Vector::item6, typename Vector::item7
0506             , typename Vector::item8, typename Vector::item9
0507             , typename Vector::item10, typename Vector::item11
0508             , typename Vector::item12, typename Vector::item13
0509               ,
0510               T
0511             > type;
0512     };
0513 };
0514 
0515 template<>
0516 struct pop_back_impl< aux::vector_tag<15> >
0517 {
0518     template< typename Vector > struct apply
0519     {
0520         typedef vector14<
0521               typename Vector::item0, typename Vector::item1
0522             , typename Vector::item2, typename Vector::item3
0523             , typename Vector::item4, typename Vector::item5
0524             , typename Vector::item6, typename Vector::item7
0525             , typename Vector::item8, typename Vector::item9
0526             , typename Vector::item10, typename Vector::item11
0527             , typename Vector::item12, typename Vector::item13
0528             > type;
0529     };
0530 };
0531 
0532 template< typename V >
0533 struct v_at< V,15 >
0534 {
0535     typedef typename V::item15 type;
0536 };
0537 
0538 template<
0539       typename T0, typename T1, typename T2, typename T3, typename T4
0540     , typename T5, typename T6, typename T7, typename T8, typename T9
0541     , typename T10, typename T11, typename T12, typename T13, typename T14
0542     , typename T15
0543     >
0544 struct vector16
0545 {
0546     typedef aux::vector_tag<16> tag;
0547     typedef vector16 type;
0548     typedef T0 item0;
0549     typedef T1 item1;
0550     typedef T2 item2;
0551     typedef T3 item3;
0552     typedef T4 item4;
0553     typedef T5 item5;
0554     typedef T6 item6;
0555     typedef T7 item7;
0556     typedef T8 item8;
0557     typedef T9 item9;
0558     typedef T10 item10;
0559     typedef T11 item11;
0560     typedef T12 item12;
0561     typedef T13 item13;
0562     typedef T14 item14;
0563     typedef T15 item15;
0564     
0565 
0566     typedef void_ item16;
0567     typedef T15 back;
0568     typedef v_iter< type,0 > begin;
0569     typedef v_iter< type,16 > end;
0570 };
0571 
0572 template<>
0573 struct push_front_impl< aux::vector_tag<15> >
0574 {
0575     template< typename Vector, typename T > struct apply
0576     {
0577         typedef vector16<
0578               T
0579               ,
0580               typename Vector::item0, typename Vector::item1
0581             , typename Vector::item2, typename Vector::item3
0582             , typename Vector::item4, typename Vector::item5
0583             , typename Vector::item6, typename Vector::item7
0584             , typename Vector::item8, typename Vector::item9
0585             , typename Vector::item10, typename Vector::item11
0586             , typename Vector::item12, typename Vector::item13
0587             , typename Vector::item14
0588             > type;
0589     };
0590 };
0591 
0592 template<>
0593 struct pop_front_impl< aux::vector_tag<16> >
0594 {
0595     template< typename Vector > struct apply
0596     {
0597         typedef vector15<
0598               typename Vector::item1, typename Vector::item2
0599             , typename Vector::item3, typename Vector::item4
0600             , typename Vector::item5, typename Vector::item6
0601             , typename Vector::item7, typename Vector::item8
0602             , typename Vector::item9, typename Vector::item10
0603             , typename Vector::item11, typename Vector::item12
0604             , typename Vector::item13, typename Vector::item14
0605             , typename Vector::item15
0606             > type;
0607     };
0608 };
0609 
0610 template<>
0611 struct push_back_impl< aux::vector_tag<15> >
0612 {
0613     template< typename Vector, typename T > struct apply
0614     {
0615         typedef vector16<
0616               typename Vector::item0, typename Vector::item1
0617             , typename Vector::item2, typename Vector::item3
0618             , typename Vector::item4, typename Vector::item5
0619             , typename Vector::item6, typename Vector::item7
0620             , typename Vector::item8, typename Vector::item9
0621             , typename Vector::item10, typename Vector::item11
0622             , typename Vector::item12, typename Vector::item13
0623             , typename Vector::item14
0624               ,
0625               T
0626             > type;
0627     };
0628 };
0629 
0630 template<>
0631 struct pop_back_impl< aux::vector_tag<16> >
0632 {
0633     template< typename Vector > struct apply
0634     {
0635         typedef vector15<
0636               typename Vector::item0, typename Vector::item1
0637             , typename Vector::item2, typename Vector::item3
0638             , typename Vector::item4, typename Vector::item5
0639             , typename Vector::item6, typename Vector::item7
0640             , typename Vector::item8, typename Vector::item9
0641             , typename Vector::item10, typename Vector::item11
0642             , typename Vector::item12, typename Vector::item13
0643             , typename Vector::item14
0644             > type;
0645     };
0646 };
0647 
0648 template< typename V >
0649 struct v_at< V,16 >
0650 {
0651     typedef typename V::item16 type;
0652 };
0653 
0654 template<
0655       typename T0, typename T1, typename T2, typename T3, typename T4
0656     , typename T5, typename T6, typename T7, typename T8, typename T9
0657     , typename T10, typename T11, typename T12, typename T13, typename T14
0658     , typename T15, typename T16
0659     >
0660 struct vector17
0661 {
0662     typedef aux::vector_tag<17> tag;
0663     typedef vector17 type;
0664     typedef T0 item0;
0665     typedef T1 item1;
0666     typedef T2 item2;
0667     typedef T3 item3;
0668     typedef T4 item4;
0669     typedef T5 item5;
0670     typedef T6 item6;
0671     typedef T7 item7;
0672     typedef T8 item8;
0673     typedef T9 item9;
0674     typedef T10 item10;
0675     typedef T11 item11;
0676     typedef T12 item12;
0677     typedef T13 item13;
0678     typedef T14 item14;
0679     typedef T15 item15;
0680     typedef T16 item16;
0681     
0682 
0683     typedef void_ item17;
0684     typedef T16 back;
0685     typedef v_iter< type,0 > begin;
0686     typedef v_iter< type,17 > end;
0687 };
0688 
0689 template<>
0690 struct push_front_impl< aux::vector_tag<16> >
0691 {
0692     template< typename Vector, typename T > struct apply
0693     {
0694         typedef vector17<
0695               T
0696               ,
0697               typename Vector::item0, typename Vector::item1
0698             , typename Vector::item2, typename Vector::item3
0699             , typename Vector::item4, typename Vector::item5
0700             , typename Vector::item6, typename Vector::item7
0701             , typename Vector::item8, typename Vector::item9
0702             , typename Vector::item10, typename Vector::item11
0703             , typename Vector::item12, typename Vector::item13
0704             , typename Vector::item14, typename Vector::item15
0705             > type;
0706     };
0707 };
0708 
0709 template<>
0710 struct pop_front_impl< aux::vector_tag<17> >
0711 {
0712     template< typename Vector > struct apply
0713     {
0714         typedef vector16<
0715               typename Vector::item1, typename Vector::item2
0716             , typename Vector::item3, typename Vector::item4
0717             , typename Vector::item5, typename Vector::item6
0718             , typename Vector::item7, typename Vector::item8
0719             , typename Vector::item9, typename Vector::item10
0720             , typename Vector::item11, typename Vector::item12
0721             , typename Vector::item13, typename Vector::item14
0722             , typename Vector::item15, typename Vector::item16
0723             > type;
0724     };
0725 };
0726 
0727 template<>
0728 struct push_back_impl< aux::vector_tag<16> >
0729 {
0730     template< typename Vector, typename T > struct apply
0731     {
0732         typedef vector17<
0733               typename Vector::item0, typename Vector::item1
0734             , typename Vector::item2, typename Vector::item3
0735             , typename Vector::item4, typename Vector::item5
0736             , typename Vector::item6, typename Vector::item7
0737             , typename Vector::item8, typename Vector::item9
0738             , typename Vector::item10, typename Vector::item11
0739             , typename Vector::item12, typename Vector::item13
0740             , typename Vector::item14, typename Vector::item15
0741               ,
0742               T
0743             > type;
0744     };
0745 };
0746 
0747 template<>
0748 struct pop_back_impl< aux::vector_tag<17> >
0749 {
0750     template< typename Vector > struct apply
0751     {
0752         typedef vector16<
0753               typename Vector::item0, typename Vector::item1
0754             , typename Vector::item2, typename Vector::item3
0755             , typename Vector::item4, typename Vector::item5
0756             , typename Vector::item6, typename Vector::item7
0757             , typename Vector::item8, typename Vector::item9
0758             , typename Vector::item10, typename Vector::item11
0759             , typename Vector::item12, typename Vector::item13
0760             , typename Vector::item14, typename Vector::item15
0761             > type;
0762     };
0763 };
0764 
0765 template< typename V >
0766 struct v_at< V,17 >
0767 {
0768     typedef typename V::item17 type;
0769 };
0770 
0771 template<
0772       typename T0, typename T1, typename T2, typename T3, typename T4
0773     , typename T5, typename T6, typename T7, typename T8, typename T9
0774     , typename T10, typename T11, typename T12, typename T13, typename T14
0775     , typename T15, typename T16, typename T17
0776     >
0777 struct vector18
0778 {
0779     typedef aux::vector_tag<18> tag;
0780     typedef vector18 type;
0781     typedef T0 item0;
0782     typedef T1 item1;
0783     typedef T2 item2;
0784     typedef T3 item3;
0785     typedef T4 item4;
0786     typedef T5 item5;
0787     typedef T6 item6;
0788     typedef T7 item7;
0789     typedef T8 item8;
0790     typedef T9 item9;
0791     typedef T10 item10;
0792     typedef T11 item11;
0793     typedef T12 item12;
0794     typedef T13 item13;
0795     typedef T14 item14;
0796     typedef T15 item15;
0797     typedef T16 item16;
0798     typedef T17 item17;
0799     
0800 
0801     typedef void_ item18;
0802     typedef T17 back;
0803     typedef v_iter< type,0 > begin;
0804     typedef v_iter< type,18 > end;
0805 };
0806 
0807 template<>
0808 struct push_front_impl< aux::vector_tag<17> >
0809 {
0810     template< typename Vector, typename T > struct apply
0811     {
0812         typedef vector18<
0813               T
0814               ,
0815               typename Vector::item0, typename Vector::item1
0816             , typename Vector::item2, typename Vector::item3
0817             , typename Vector::item4, typename Vector::item5
0818             , typename Vector::item6, typename Vector::item7
0819             , typename Vector::item8, typename Vector::item9
0820             , typename Vector::item10, typename Vector::item11
0821             , typename Vector::item12, typename Vector::item13
0822             , typename Vector::item14, typename Vector::item15
0823             , typename Vector::item16
0824             > type;
0825     };
0826 };
0827 
0828 template<>
0829 struct pop_front_impl< aux::vector_tag<18> >
0830 {
0831     template< typename Vector > struct apply
0832     {
0833         typedef vector17<
0834               typename Vector::item1, typename Vector::item2
0835             , typename Vector::item3, typename Vector::item4
0836             , typename Vector::item5, typename Vector::item6
0837             , typename Vector::item7, typename Vector::item8
0838             , typename Vector::item9, typename Vector::item10
0839             , typename Vector::item11, typename Vector::item12
0840             , typename Vector::item13, typename Vector::item14
0841             , typename Vector::item15, typename Vector::item16
0842             , typename Vector::item17
0843             > type;
0844     };
0845 };
0846 
0847 template<>
0848 struct push_back_impl< aux::vector_tag<17> >
0849 {
0850     template< typename Vector, typename T > struct apply
0851     {
0852         typedef vector18<
0853               typename Vector::item0, typename Vector::item1
0854             , typename Vector::item2, typename Vector::item3
0855             , typename Vector::item4, typename Vector::item5
0856             , typename Vector::item6, typename Vector::item7
0857             , typename Vector::item8, typename Vector::item9
0858             , typename Vector::item10, typename Vector::item11
0859             , typename Vector::item12, typename Vector::item13
0860             , typename Vector::item14, typename Vector::item15
0861             , typename Vector::item16
0862               ,
0863               T
0864             > type;
0865     };
0866 };
0867 
0868 template<>
0869 struct pop_back_impl< aux::vector_tag<18> >
0870 {
0871     template< typename Vector > struct apply
0872     {
0873         typedef vector17<
0874               typename Vector::item0, typename Vector::item1
0875             , typename Vector::item2, typename Vector::item3
0876             , typename Vector::item4, typename Vector::item5
0877             , typename Vector::item6, typename Vector::item7
0878             , typename Vector::item8, typename Vector::item9
0879             , typename Vector::item10, typename Vector::item11
0880             , typename Vector::item12, typename Vector::item13
0881             , typename Vector::item14, typename Vector::item15
0882             , typename Vector::item16
0883             > type;
0884     };
0885 };
0886 
0887 template< typename V >
0888 struct v_at< V,18 >
0889 {
0890     typedef typename V::item18 type;
0891 };
0892 
0893 template<
0894       typename T0, typename T1, typename T2, typename T3, typename T4
0895     , typename T5, typename T6, typename T7, typename T8, typename T9
0896     , typename T10, typename T11, typename T12, typename T13, typename T14
0897     , typename T15, typename T16, typename T17, typename T18
0898     >
0899 struct vector19
0900 {
0901     typedef aux::vector_tag<19> tag;
0902     typedef vector19 type;
0903     typedef T0 item0;
0904     typedef T1 item1;
0905     typedef T2 item2;
0906     typedef T3 item3;
0907     typedef T4 item4;
0908     typedef T5 item5;
0909     typedef T6 item6;
0910     typedef T7 item7;
0911     typedef T8 item8;
0912     typedef T9 item9;
0913     typedef T10 item10;
0914     typedef T11 item11;
0915     typedef T12 item12;
0916     typedef T13 item13;
0917     typedef T14 item14;
0918     typedef T15 item15;
0919     typedef T16 item16;
0920     typedef T17 item17;
0921     typedef T18 item18;
0922     
0923 
0924     typedef void_ item19;
0925     typedef T18 back;
0926     typedef v_iter< type,0 > begin;
0927     typedef v_iter< type,19 > end;
0928 };
0929 
0930 template<>
0931 struct push_front_impl< aux::vector_tag<18> >
0932 {
0933     template< typename Vector, typename T > struct apply
0934     {
0935         typedef vector19<
0936               T
0937               ,
0938               typename Vector::item0, typename Vector::item1
0939             , typename Vector::item2, typename Vector::item3
0940             , typename Vector::item4, typename Vector::item5
0941             , typename Vector::item6, typename Vector::item7
0942             , typename Vector::item8, typename Vector::item9
0943             , typename Vector::item10, typename Vector::item11
0944             , typename Vector::item12, typename Vector::item13
0945             , typename Vector::item14, typename Vector::item15
0946             , typename Vector::item16, typename Vector::item17
0947             > type;
0948     };
0949 };
0950 
0951 template<>
0952 struct pop_front_impl< aux::vector_tag<19> >
0953 {
0954     template< typename Vector > struct apply
0955     {
0956         typedef vector18<
0957               typename Vector::item1, typename Vector::item2
0958             , typename Vector::item3, typename Vector::item4
0959             , typename Vector::item5, typename Vector::item6
0960             , typename Vector::item7, typename Vector::item8
0961             , typename Vector::item9, typename Vector::item10
0962             , typename Vector::item11, typename Vector::item12
0963             , typename Vector::item13, typename Vector::item14
0964             , typename Vector::item15, typename Vector::item16
0965             , typename Vector::item17, typename Vector::item18
0966             > type;
0967     };
0968 };
0969 
0970 template<>
0971 struct push_back_impl< aux::vector_tag<18> >
0972 {
0973     template< typename Vector, typename T > struct apply
0974     {
0975         typedef vector19<
0976               typename Vector::item0, typename Vector::item1
0977             , typename Vector::item2, typename Vector::item3
0978             , typename Vector::item4, typename Vector::item5
0979             , typename Vector::item6, typename Vector::item7
0980             , typename Vector::item8, typename Vector::item9
0981             , typename Vector::item10, typename Vector::item11
0982             , typename Vector::item12, typename Vector::item13
0983             , typename Vector::item14, typename Vector::item15
0984             , typename Vector::item16, typename Vector::item17
0985               ,
0986               T
0987             > type;
0988     };
0989 };
0990 
0991 template<>
0992 struct pop_back_impl< aux::vector_tag<19> >
0993 {
0994     template< typename Vector > struct apply
0995     {
0996         typedef vector18<
0997               typename Vector::item0, typename Vector::item1
0998             , typename Vector::item2, typename Vector::item3
0999             , typename Vector::item4, typename Vector::item5
1000             , typename Vector::item6, typename Vector::item7
1001             , typename Vector::item8, typename Vector::item9
1002             , typename Vector::item10, typename Vector::item11
1003             , typename Vector::item12, typename Vector::item13
1004             , typename Vector::item14, typename Vector::item15
1005             , typename Vector::item16, typename Vector::item17
1006             > type;
1007     };
1008 };
1009 
1010 template< typename V >
1011 struct v_at< V,19 >
1012 {
1013     typedef typename V::item19 type;
1014 };
1015 
1016 template<
1017       typename T0, typename T1, typename T2, typename T3, typename T4
1018     , typename T5, typename T6, typename T7, typename T8, typename T9
1019     , typename T10, typename T11, typename T12, typename T13, typename T14
1020     , typename T15, typename T16, typename T17, typename T18, typename T19
1021     >
1022 struct vector20
1023 {
1024     typedef aux::vector_tag<20> tag;
1025     typedef vector20 type;
1026     typedef T0 item0;
1027     typedef T1 item1;
1028     typedef T2 item2;
1029     typedef T3 item3;
1030     typedef T4 item4;
1031     typedef T5 item5;
1032     typedef T6 item6;
1033     typedef T7 item7;
1034     typedef T8 item8;
1035     typedef T9 item9;
1036     typedef T10 item10;
1037     typedef T11 item11;
1038     typedef T12 item12;
1039     typedef T13 item13;
1040     typedef T14 item14;
1041     typedef T15 item15;
1042     typedef T16 item16;
1043     typedef T17 item17;
1044     typedef T18 item18;
1045     typedef T19 item19;
1046     
1047 
1048     typedef void_ item20;
1049     typedef T19 back;
1050     typedef v_iter< type,0 > begin;
1051     typedef v_iter< type,20 > end;
1052 };
1053 
1054 template<>
1055 struct push_front_impl< aux::vector_tag<19> >
1056 {
1057     template< typename Vector, typename T > struct apply
1058     {
1059         typedef vector20<
1060               T
1061               ,
1062               typename Vector::item0, typename Vector::item1
1063             , typename Vector::item2, typename Vector::item3
1064             , typename Vector::item4, typename Vector::item5
1065             , typename Vector::item6, typename Vector::item7
1066             , typename Vector::item8, typename Vector::item9
1067             , typename Vector::item10, typename Vector::item11
1068             , typename Vector::item12, typename Vector::item13
1069             , typename Vector::item14, typename Vector::item15
1070             , typename Vector::item16, typename Vector::item17
1071             , typename Vector::item18
1072             > type;
1073     };
1074 };
1075 
1076 template<>
1077 struct pop_front_impl< aux::vector_tag<20> >
1078 {
1079     template< typename Vector > struct apply
1080     {
1081         typedef vector19<
1082               typename Vector::item1, typename Vector::item2
1083             , typename Vector::item3, typename Vector::item4
1084             , typename Vector::item5, typename Vector::item6
1085             , typename Vector::item7, typename Vector::item8
1086             , typename Vector::item9, typename Vector::item10
1087             , typename Vector::item11, typename Vector::item12
1088             , typename Vector::item13, typename Vector::item14
1089             , typename Vector::item15, typename Vector::item16
1090             , typename Vector::item17, typename Vector::item18
1091             , typename Vector::item19
1092             > type;
1093     };
1094 };
1095 
1096 template<>
1097 struct push_back_impl< aux::vector_tag<19> >
1098 {
1099     template< typename Vector, typename T > struct apply
1100     {
1101         typedef vector20<
1102               typename Vector::item0, typename Vector::item1
1103             , typename Vector::item2, typename Vector::item3
1104             , typename Vector::item4, typename Vector::item5
1105             , typename Vector::item6, typename Vector::item7
1106             , typename Vector::item8, typename Vector::item9
1107             , typename Vector::item10, typename Vector::item11
1108             , typename Vector::item12, typename Vector::item13
1109             , typename Vector::item14, typename Vector::item15
1110             , typename Vector::item16, typename Vector::item17
1111             , typename Vector::item18
1112               ,
1113               T
1114             > type;
1115     };
1116 };
1117 
1118 template<>
1119 struct pop_back_impl< aux::vector_tag<20> >
1120 {
1121     template< typename Vector > struct apply
1122     {
1123         typedef vector19<
1124               typename Vector::item0, typename Vector::item1
1125             , typename Vector::item2, typename Vector::item3
1126             , typename Vector::item4, typename Vector::item5
1127             , typename Vector::item6, typename Vector::item7
1128             , typename Vector::item8, typename Vector::item9
1129             , typename Vector::item10, typename Vector::item11
1130             , typename Vector::item12, typename Vector::item13
1131             , typename Vector::item14, typename Vector::item15
1132             , typename Vector::item16, typename Vector::item17
1133             , typename Vector::item18
1134             > type;
1135     };
1136 };
1137 
1138 template< typename V >
1139 struct v_at< V,20 >
1140 {
1141     typedef typename V::item20 type;
1142 };
1143 
1144 }}