BOOST_PP_ENUM_SHIFTED_PARAMS_Z
マクロはコンマで区切られた、ずらされたパラメータリストを生成する。 これは BOOST_PP_REPEAT
に最も効率よく再入する。
BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, count, param)
-
z
: 利用可能な次のBOOST_PP_REPEAT
の次元。 -
count
: 生成するパラメータの個数。 有効な値の範囲は0
からBOOST_PP_LIMIT_REPEAT
まで。 -
param
: パラメータのテキスト部。BOOST_PP_ENUM_SHIFTED_PARAMS_Z
は生成したパラメータと1
からcount - 1
までの範囲の数字とを結合する。
このマクロはコンマ区切りのシーケンスに展開される:
param ## 1, ... param ## count - 1
Header: <boost/preprocessor/repetition/enum_shifted_params.hpp>
#include <boost/preprocessor/repetition/enum_params.hpp>
#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
int add(void) {
return 0;
}
#define ADD_F(z, n, _) \
int add_f(BOOST_PP_ENUM_PARAMS_Z(z, BOOST_PP_INC(n), int p)) { \
return p0 + add_f(BOOST_PP_ENUM_SHIFTED_PARAMS_Z(z, BOOST_PP_INC(n), p)); \
} \
/**/
BOOST_PP_REPEAT(5, ADD_F, nil)