我有一个这样的宏(它来自一个实际有用的用例,但我一直在玩简化的案例):
#define MY_MACRO(M) M(3) M(5) M(7)
#define MULTIPLY_BY_2(A) (2*A)
然后我可以写
MY_MACRO(MULTIPLY_BY_2)
// -> (2*3) (2*5) (2*7)
凉爽的!我想要的是这样的:
#define MULTIPLY(A,B) (A*B)
MY_MACRO(BIND(MULTIPLY, 2))
得到与上面相同的结果。BIND 可能是什么?我已经尝试了一些技巧,并且可以报告这几乎是可能的(我觉得这很神奇)。但它并不漂亮,也不一般。这能做好吗?(即纯粹在 CPP 中构建一些真正的功能性设施?)绑定一个绑定宏可以做得很好吗?
也许我真正要问的是,您知道的任何预处理器库中是否有这样的工具?我在 Boost 中没有找到类似的东西。