72 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			72 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | 
 | ||
|  | // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION | ||
|  | 
 | ||
|  | // 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) | ||
|  | // | ||
|  | // See http://www.boost.org/libs/mpl for documentation. | ||
|  | 
 | ||
|  | // $Id$ | ||
|  | // $Date$ | ||
|  | // $Revision$ | ||
|  | 
 | ||
|  | #if defined(BOOST_PP_IS_ITERATING) | ||
|  | 
 | ||
|  | #include <boost/preprocessor/enum_params.hpp> | ||
|  | #include <boost/preprocessor/enum_shifted_params.hpp> | ||
|  | #include <boost/preprocessor/dec.hpp> | ||
|  | #include <boost/preprocessor/cat.hpp> | ||
|  | 
 | ||
|  | #define i BOOST_PP_FRAME_ITERATION(1) | ||
|  | 
 | ||
|  | #if i == 1 | ||
|  | 
 | ||
|  | template< | ||
|  |       typename T | ||
|  |     , BOOST_PP_ENUM_PARAMS(i, T C) | ||
|  |     > | ||
|  | struct list1_c | ||
|  |     : l_item< | ||
|  |           long_<1> | ||
|  |         , integral_c<T,C0> | ||
|  |         , l_end | ||
|  |         > | ||
|  | { | ||
|  |     typedef list1_c type; | ||
|  |     typedef T value_type; | ||
|  | }; | ||
|  | 
 | ||
|  | #else | ||
|  | 
 | ||
|  | #   define MPL_AUX_LIST_C_TAIL(list, i, C) \ | ||
|  |     BOOST_PP_CAT(BOOST_PP_CAT(list,BOOST_PP_DEC(i)),_c)<T, \ | ||
|  |       BOOST_PP_ENUM_SHIFTED_PARAMS(i, C) \ | ||
|  |     > \ | ||
|  |     /**/ | ||
|  |      | ||
|  | template< | ||
|  |       typename T | ||
|  |     , BOOST_PP_ENUM_PARAMS(i, T C) | ||
|  |     > | ||
|  | struct BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c) | ||
|  |     : l_item< | ||
|  |           long_<i> | ||
|  |         , integral_c<T,C0> | ||
|  |         , MPL_AUX_LIST_C_TAIL(list,i,C) | ||
|  |         > | ||
|  | { | ||
|  |     typedef BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c) type; | ||
|  |     typedef T value_type; | ||
|  | }; | ||
|  | 
 | ||
|  | #   undef MPL_AUX_LIST_C_TAIL | ||
|  | 
 | ||
|  | #endif // i == 1 | ||
|  | 
 | ||
|  | #undef i | ||
|  | 
 | ||
|  | #endif // BOOST_PP_IS_ITERATING |