使用boost预处理器进行令牌比较

时间:2016-01-31 06:25:00

标签: c++ boost macros boost-preprocessor

我找到了一个page,它解释了如何使用c预处理器指令实现标识符 - 令牌比较。这可以通过这样的一些宏来完成:

#define COMPARE_foo(x) x
#define COMPARE_bar(x) x
#define PRIMITIVE_COMPARE(x, y) IS_PAREN \
 ( \
 COMPARE_ ## x ( COMPARE_ ## y) (())  \
 )

PRIMITIVE_COMPARE(foo, bar) // expands to 0
PRIMITIVE_COMPARE(bar, bar) // expands to 1

哪个IS_PAREN检查它是否完全展开(当两个宏因painting blue而不同时发生)。

现在我在Boost预处理器中寻找类似的命令。我想要一个宏的接受类型的列表,如果宏调用这种类型的宏,它扩展到它必须的,否则它什么都没有。我的伪代码是这样的:

#define ACCEPTED_TYPE (float)(int)(string)
#define Macro(x) // If one of accepted type do a otherwise do nothing

如果boost预处理器没有确切的解决方案,那么您的建议是什么,以使实现更容易。

0 个答案:

没有答案