1145 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			1145 lines
		
	
	
		
			35 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 
 | ||
|  | // Copyright Aleksey Gurtovoy 2000-2004 | ||
|  | // | ||
|  | // Distributed under the Boost Software License, Version 1.0.  | ||
|  | // (See accompanying file LICENSE_1_0.txt or copy at  | ||
|  | // http://www.boost.org/LICENSE_1_0.txt) | ||
|  | // | ||
|  | 
 | ||
|  | // Preprocessed version of "boost/mpl/vector/vector20.hpp" header | ||
|  | // -- DO NOT modify by hand! | ||
|  | 
 | ||
|  | namespace boost { namespace mpl { | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10 | ||
|  |     > | ||
|  | struct vector11 | ||
|  | { | ||
|  |     typedef aux::vector_tag<11> tag; | ||
|  |     typedef vector11 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item11; | ||
|  |     typedef T10 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,11 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<10> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector11< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<11> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector10< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<10> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector11< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<11> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector10< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,11 > | ||
|  | { | ||
|  |     typedef typename V::item11 type; | ||
|  | }; | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10, typename T11 | ||
|  |     > | ||
|  | struct vector12 | ||
|  | { | ||
|  |     typedef aux::vector_tag<12> tag; | ||
|  |     typedef vector12 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |     typedef T11 item11; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item12; | ||
|  |     typedef T11 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,12 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<11> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector12< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<12> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector11< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             , typename Vector::item11 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<11> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector12< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<12> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector11< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,12 > | ||
|  | { | ||
|  |     typedef typename V::item12 type; | ||
|  | }; | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10, typename T11, typename T12 | ||
|  |     > | ||
|  | struct vector13 | ||
|  | { | ||
|  |     typedef aux::vector_tag<13> tag; | ||
|  |     typedef vector13 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |     typedef T11 item11; | ||
|  |     typedef T12 item12; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item13; | ||
|  |     typedef T12 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,13 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<12> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector13< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<13> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector12< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             , typename Vector::item11, typename Vector::item12 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<12> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector13< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<13> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector12< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,13 > | ||
|  | { | ||
|  |     typedef typename V::item13 type; | ||
|  | }; | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10, typename T11, typename T12, typename T13 | ||
|  |     > | ||
|  | struct vector14 | ||
|  | { | ||
|  |     typedef aux::vector_tag<14> tag; | ||
|  |     typedef vector14 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |     typedef T11 item11; | ||
|  |     typedef T12 item12; | ||
|  |     typedef T13 item13; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item14; | ||
|  |     typedef T13 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,14 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<13> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector14< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<14> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector13< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             , typename Vector::item11, typename Vector::item12 | ||
|  |             , typename Vector::item13 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<13> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector14< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<14> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector13< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,14 > | ||
|  | { | ||
|  |     typedef typename V::item14 type; | ||
|  | }; | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10, typename T11, typename T12, typename T13, typename T14 | ||
|  |     > | ||
|  | struct vector15 | ||
|  | { | ||
|  |     typedef aux::vector_tag<15> tag; | ||
|  |     typedef vector15 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |     typedef T11 item11; | ||
|  |     typedef T12 item12; | ||
|  |     typedef T13 item13; | ||
|  |     typedef T14 item14; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item15; | ||
|  |     typedef T14 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,15 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<14> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector15< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<15> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector14< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             , typename Vector::item11, typename Vector::item12 | ||
|  |             , typename Vector::item13, typename Vector::item14 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<14> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector15< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<15> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector14< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,15 > | ||
|  | { | ||
|  |     typedef typename V::item15 type; | ||
|  | }; | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10, typename T11, typename T12, typename T13, typename T14 | ||
|  |     , typename T15 | ||
|  |     > | ||
|  | struct vector16 | ||
|  | { | ||
|  |     typedef aux::vector_tag<16> tag; | ||
|  |     typedef vector16 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |     typedef T11 item11; | ||
|  |     typedef T12 item12; | ||
|  |     typedef T13 item13; | ||
|  |     typedef T14 item14; | ||
|  |     typedef T15 item15; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item16; | ||
|  |     typedef T15 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,16 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<15> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector16< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<16> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector15< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             , typename Vector::item11, typename Vector::item12 | ||
|  |             , typename Vector::item13, typename Vector::item14 | ||
|  |             , typename Vector::item15 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<15> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector16< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<16> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector15< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,16 > | ||
|  | { | ||
|  |     typedef typename V::item16 type; | ||
|  | }; | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10, typename T11, typename T12, typename T13, typename T14 | ||
|  |     , typename T15, typename T16 | ||
|  |     > | ||
|  | struct vector17 | ||
|  | { | ||
|  |     typedef aux::vector_tag<17> tag; | ||
|  |     typedef vector17 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |     typedef T11 item11; | ||
|  |     typedef T12 item12; | ||
|  |     typedef T13 item13; | ||
|  |     typedef T14 item14; | ||
|  |     typedef T15 item15; | ||
|  |     typedef T16 item16; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item17; | ||
|  |     typedef T16 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,17 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<16> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector17< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<17> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector16< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             , typename Vector::item11, typename Vector::item12 | ||
|  |             , typename Vector::item13, typename Vector::item14 | ||
|  |             , typename Vector::item15, typename Vector::item16 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<16> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector17< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<17> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector16< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,17 > | ||
|  | { | ||
|  |     typedef typename V::item17 type; | ||
|  | }; | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10, typename T11, typename T12, typename T13, typename T14 | ||
|  |     , typename T15, typename T16, typename T17 | ||
|  |     > | ||
|  | struct vector18 | ||
|  | { | ||
|  |     typedef aux::vector_tag<18> tag; | ||
|  |     typedef vector18 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |     typedef T11 item11; | ||
|  |     typedef T12 item12; | ||
|  |     typedef T13 item13; | ||
|  |     typedef T14 item14; | ||
|  |     typedef T15 item15; | ||
|  |     typedef T16 item16; | ||
|  |     typedef T17 item17; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item18; | ||
|  |     typedef T17 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,18 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<17> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector18< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             , typename Vector::item16 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<18> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector17< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             , typename Vector::item11, typename Vector::item12 | ||
|  |             , typename Vector::item13, typename Vector::item14 | ||
|  |             , typename Vector::item15, typename Vector::item16 | ||
|  |             , typename Vector::item17 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<17> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector18< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             , typename Vector::item16 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<18> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector17< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             , typename Vector::item16 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,18 > | ||
|  | { | ||
|  |     typedef typename V::item18 type; | ||
|  | }; | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10, typename T11, typename T12, typename T13, typename T14 | ||
|  |     , typename T15, typename T16, typename T17, typename T18 | ||
|  |     > | ||
|  | struct vector19 | ||
|  | { | ||
|  |     typedef aux::vector_tag<19> tag; | ||
|  |     typedef vector19 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |     typedef T11 item11; | ||
|  |     typedef T12 item12; | ||
|  |     typedef T13 item13; | ||
|  |     typedef T14 item14; | ||
|  |     typedef T15 item15; | ||
|  |     typedef T16 item16; | ||
|  |     typedef T17 item17; | ||
|  |     typedef T18 item18; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item19; | ||
|  |     typedef T18 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,19 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<18> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector19< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             , typename Vector::item16, typename Vector::item17 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<19> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector18< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             , typename Vector::item11, typename Vector::item12 | ||
|  |             , typename Vector::item13, typename Vector::item14 | ||
|  |             , typename Vector::item15, typename Vector::item16 | ||
|  |             , typename Vector::item17, typename Vector::item18 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<18> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector19< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             , typename Vector::item16, typename Vector::item17 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<19> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector18< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             , typename Vector::item16, typename Vector::item17 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,19 > | ||
|  | { | ||
|  |     typedef typename V::item19 type; | ||
|  | }; | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T0, typename T1, typename T2, typename T3, typename T4 | ||
|  |     , typename T5, typename T6, typename T7, typename T8, typename T9 | ||
|  |     , typename T10, typename T11, typename T12, typename T13, typename T14 | ||
|  |     , typename T15, typename T16, typename T17, typename T18, typename T19 | ||
|  |     > | ||
|  | struct vector20 | ||
|  | { | ||
|  |     typedef aux::vector_tag<20> tag; | ||
|  |     typedef vector20 type; | ||
|  |     typedef T0 item0; | ||
|  |     typedef T1 item1; | ||
|  |     typedef T2 item2; | ||
|  |     typedef T3 item3; | ||
|  |     typedef T4 item4; | ||
|  |     typedef T5 item5; | ||
|  |     typedef T6 item6; | ||
|  |     typedef T7 item7; | ||
|  |     typedef T8 item8; | ||
|  |     typedef T9 item9; | ||
|  |     typedef T10 item10; | ||
|  |     typedef T11 item11; | ||
|  |     typedef T12 item12; | ||
|  |     typedef T13 item13; | ||
|  |     typedef T14 item14; | ||
|  |     typedef T15 item15; | ||
|  |     typedef T16 item16; | ||
|  |     typedef T17 item17; | ||
|  |     typedef T18 item18; | ||
|  |     typedef T19 item19; | ||
|  |      | ||
|  | 
 | ||
|  |     typedef void_ item20; | ||
|  |     typedef T19 back; | ||
|  |     typedef v_iter< type,0 > begin; | ||
|  |     typedef v_iter< type,20 > end; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_front_impl< aux::vector_tag<19> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector20< | ||
|  |               T | ||
|  |               , | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             , typename Vector::item16, typename Vector::item17 | ||
|  |             , typename Vector::item18 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_front_impl< aux::vector_tag<20> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector19< | ||
|  |               typename Vector::item1, typename Vector::item2 | ||
|  |             , typename Vector::item3, typename Vector::item4 | ||
|  |             , typename Vector::item5, typename Vector::item6 | ||
|  |             , typename Vector::item7, typename Vector::item8 | ||
|  |             , typename Vector::item9, typename Vector::item10 | ||
|  |             , typename Vector::item11, typename Vector::item12 | ||
|  |             , typename Vector::item13, typename Vector::item14 | ||
|  |             , typename Vector::item15, typename Vector::item16 | ||
|  |             , typename Vector::item17, typename Vector::item18 | ||
|  |             , typename Vector::item19 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct push_back_impl< aux::vector_tag<19> > | ||
|  | { | ||
|  |     template< typename Vector, typename T > struct apply | ||
|  |     { | ||
|  |         typedef vector20< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             , typename Vector::item16, typename Vector::item17 | ||
|  |             , typename Vector::item18 | ||
|  |               , | ||
|  |               T | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template<> | ||
|  | struct pop_back_impl< aux::vector_tag<20> > | ||
|  | { | ||
|  |     template< typename Vector > struct apply | ||
|  |     { | ||
|  |         typedef vector19< | ||
|  |               typename Vector::item0, typename Vector::item1 | ||
|  |             , typename Vector::item2, typename Vector::item3 | ||
|  |             , typename Vector::item4, typename Vector::item5 | ||
|  |             , typename Vector::item6, typename Vector::item7 | ||
|  |             , typename Vector::item8, typename Vector::item9 | ||
|  |             , typename Vector::item10, typename Vector::item11 | ||
|  |             , typename Vector::item12, typename Vector::item13 | ||
|  |             , typename Vector::item14, typename Vector::item15 | ||
|  |             , typename Vector::item16, typename Vector::item17 | ||
|  |             , typename Vector::item18 | ||
|  |             > type; | ||
|  |     }; | ||
|  | }; | ||
|  | 
 | ||
|  | template< typename V > | ||
|  | struct v_at< V,20 > | ||
|  | { | ||
|  |     typedef typename V::item20 type; | ||
|  | }; | ||
|  | 
 | ||
|  | }} |