File indexing completed on 2025-01-18 09:41:55
0001
0002
0003
0004 #if defined(BOOST_PP_IS_ITERATING)
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #include <boost/preprocessor/enum_params.hpp>
0019 #include <boost/preprocessor/enum_shifted_params.hpp>
0020 #include <boost/preprocessor/comma_if.hpp>
0021 #include <boost/preprocessor/repeat.hpp>
0022 #include <boost/preprocessor/dec.hpp>
0023 #include <boost/preprocessor/cat.hpp>
0024
0025 #define i_ BOOST_PP_FRAME_ITERATION(1)
0026
0027 #if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
0028
0029 # define AUX778076_VECTOR_TAIL(vector, i_, C) \
0030 BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)<T \
0031 BOOST_PP_COMMA_IF(i_) BOOST_PP_ENUM_PARAMS(i_, C) \
0032 > \
0033
0034
0035 #if i_ > 0
0036 template<
0037 typename T
0038 , BOOST_PP_ENUM_PARAMS(i_, T C)
0039 >
0040 struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)
0041 : v_item<
0042 integral_c<T,BOOST_PP_CAT(C,BOOST_PP_DEC(i_))>
0043 , AUX778076_VECTOR_TAIL(vector,BOOST_PP_DEC(i_),C)
0044 >
0045 {
0046 typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type;
0047 typedef T value_type;
0048 };
0049 #endif
0050
0051 # undef AUX778076_VECTOR_TAIL
0052
0053 #else
0054
0055 # define AUX778076_VECTOR_C_PARAM_FUNC(unused, i_, param) \
0056 BOOST_PP_COMMA_IF(i_) \
0057 integral_c<T,BOOST_PP_CAT(param,i_)> \
0058
0059
0060 template<
0061 typename T
0062 , BOOST_PP_ENUM_PARAMS(i_, T C)
0063 >
0064 struct BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c)
0065 : BOOST_PP_CAT(vector,i_)< BOOST_PP_REPEAT(i_,AUX778076_VECTOR_C_PARAM_FUNC,C) >
0066 {
0067 typedef BOOST_PP_CAT(BOOST_PP_CAT(vector,i_),_c) type;
0068 typedef T value_type;
0069 };
0070
0071 # undef AUX778076_VECTOR_C_PARAM_FUNC
0072
0073 #endif
0074
0075 #undef i_
0076
0077 #endif