2 // NO INCLUDE GUARDS, THE HEADER IS INTENDED FOR MULTIPLE INCLUSION
4 // Copyright Aleksey Gurtovoy 2000-2004
6 // Distributed under the Boost Software License, Version 1.0.
7 // (See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
10 // See http://www.boost.org/libs/mpl for documentation.
16 #if defined(BOOST_PP_IS_ITERATING)
18 #include <boost/preprocessor/enum_params.hpp>
19 #include <boost/preprocessor/enum_shifted_params.hpp>
20 #include <boost/preprocessor/dec.hpp>
21 #include <boost/preprocessor/cat.hpp>
23 #define i BOOST_PP_FRAME_ITERATION(1)
29 , BOOST_PP_ENUM_PARAMS(i, T C)
44 # define MPL_AUX_LIST_C_TAIL(list, i, C) \
45 BOOST_PP_CAT(BOOST_PP_CAT(list,BOOST_PP_DEC(i)),_c)<T, \
46 BOOST_PP_ENUM_SHIFTED_PARAMS(i, C) \
52 , BOOST_PP_ENUM_PARAMS(i, T C)
54 struct BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c)
58 , MPL_AUX_LIST_C_TAIL(list,i,C)
61 typedef BOOST_PP_CAT(BOOST_PP_CAT(list,i),_c) type;
65 # undef MPL_AUX_LIST_C_TAIL
71 #endif // BOOST_PP_IS_ITERATING