BOOST_PP_MOD_D
マクロは第2引数と第3引数の余りに展開される。 これは、最も効率的に BOOST_PP_WHILE
に再入する。
Usage
BOOST_PP_MOD_D(d, x, y)
Arguments
-
d
: 利用可能な次のBOOST_PP_WHILE
の繰り返し。 -
x
: 演算の割られる方(分子)。 有効な値の範囲は0
からBOOST_PP_LIMIT_MAG
までである。 -
y
: 演算の割る方(分母)。 有効な値の範囲は0
からBOOST_PP_LIMIT_MAG
までである。
Remarks
もし y
が 0
なら、結果は未定義である。
See Also
Requirements
Header: <boost/preprocessor/arithmetic/div.hpp>
Sample Code
#include <boost/preprocessor/arithmetic/mod.hpp>
#include <boost/preprocessor/list/filter.hpp>
#include <boost/preprocessor/logical/not.hpp>
#define LIST (1, (2, (3, (4, (5, BOOST_PP_NIL)))))
#define EVEN_P(d, _, num) BOOST_PP_NOT(BOOST_PP_MOD_D(d, num, 2))
#define EVEN(list) BOOST_PP_LIST_FILTER(EVEN_P, nil, list)
EVEN(LIST) // expands to (2, (4, BOOST_PP_NIL))
#define ODD_P(d, _, num) BOOST_PP_MOD_D(d, num, 2)
#define ODD(list) BOOST_PP_LIST_FILTER(ODD_P, nil, list)
ODD(LIST) // expands to (1, (3, (5, BOOST_PP_NIL)))