File indexing completed on 2025-01-18 09:41:55
0001
0002 #if !defined(BOOST_PP_IS_ITERATING)
0003
0004
0005
0006 #ifndef BOOST_MPL_APPLY_FWD_HPP_INCLUDED
0007 #define BOOST_MPL_APPLY_FWD_HPP_INCLUDED
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 #if !defined(BOOST_MPL_PREPROCESSING_MODE)
0022 # include <boost/mpl/aux_/na.hpp>
0023 #endif
0024
0025 #include <boost/mpl/aux_/config/use_preprocessed.hpp>
0026
0027 #if !defined(BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS) \
0028 && !defined(BOOST_MPL_PREPROCESSING_MODE)
0029
0030 # define BOOST_MPL_PREPROCESSED_HEADER apply_fwd.hpp
0031 # include <boost/mpl/aux_/include_preprocessed.hpp>
0032
0033 #else
0034
0035 # include <boost/mpl/limits/arity.hpp>
0036 # include <boost/mpl/aux_/preprocessor/params.hpp>
0037 # include <boost/mpl/aux_/preprocessor/default_params.hpp>
0038 # include <boost/mpl/aux_/config/ctps.hpp>
0039 # include <boost/mpl/aux_/nttp_decl.hpp>
0040
0041 # include <boost/preprocessor/comma_if.hpp>
0042 # include <boost/preprocessor/iterate.hpp>
0043 # include <boost/preprocessor/cat.hpp>
0044
0045
0046
0047 #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
0048 # define BOOST_MPL_CFG_NO_APPLY_TEMPLATE
0049 #endif
0050
0051 namespace boost { namespace mpl {
0052
0053
0054 # define AUX778076_APPLY_DEF_PARAMS(param, value) \
0055 BOOST_MPL_PP_DEFAULT_PARAMS( \
0056 BOOST_MPL_LIMIT_METAFUNCTION_ARITY \
0057 , param \
0058 , value \
0059 ) \
0060
0061
0062 # define AUX778076_APPLY_N_COMMA_PARAMS(n, param) \
0063 BOOST_PP_COMMA_IF(n) \
0064 BOOST_MPL_PP_PARAMS(n, param) \
0065
0066
0067 # if !defined(BOOST_MPL_CFG_NO_APPLY_TEMPLATE)
0068
0069 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
0070
0071 template<
0072 typename F, AUX778076_APPLY_DEF_PARAMS(typename T, na)
0073 >
0074 struct apply;
0075 #else
0076 namespace aux {
0077 template< BOOST_AUX_NTTP_DECL(int, arity_) > struct apply_chooser;
0078 }
0079 #endif
0080
0081 # endif
0082
0083 #define BOOST_PP_ITERATION_PARAMS_1 \
0084 (3,(0, BOOST_MPL_LIMIT_METAFUNCTION_ARITY, <boost/mpl/apply_fwd.hpp>))
0085 #include BOOST_PP_ITERATE()
0086
0087
0088 # undef AUX778076_APPLY_N_COMMA_PARAMS
0089 # undef AUX778076_APPLY_DEF_PARAMS
0090
0091 }}
0092
0093 #endif
0094 #endif
0095
0096
0097
0098 #else
0099 #define i_ BOOST_PP_FRAME_ITERATION(1)
0100
0101 template<
0102 typename F AUX778076_APPLY_N_COMMA_PARAMS(i_, typename T)
0103 >
0104 struct BOOST_PP_CAT(apply,i_);
0105
0106 #undef i_
0107 #endif