按值替换表达式?
Substitute expression by value?
我有以下宏:
#define REFLECTABLE(...) \
REFLECTABLE_CONST(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)==0, __VA_ARGS__)
我运行预处理器。它传递给 REFLECTABLE_CONST
3==0
而不是 0
或 false
。在 REFLECTABLE_CONST
中,我使用该值来模拟 this post 中描述的条件。所以,我需要预处理器传递一个值。有没有办法让预处理器用 false
或 0
替换 3==0
之类的东西?
我无法重现 BOOST_PP_VARIADIC_SIZE
能够得到 0
的结果,但如果可以的话,这应该可行:
#define IS_EMPTY_IMPL0 1
#define IS_EMPTY_IMPL1 0
#define IS_EMPTY_IMPL2 0
#define IS_EMPTY_IMPL3 0
#define IS_EMPTY_IMPL4 0
#define IS_EMPTY_IMPL5 0
#define IS_EMPTY_IMPL6 0
#define IS_EMPTY_IMPL7 0
#define IS_EMPTY_IMPL8 0
#define IS_EMPTY_IMPL9 0
#define IS_EMPTY(...) BOOST_PP_CAT(IS_EMPTY_IMPL, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__))
#define REFLECTABLE(...) \
REFLECTABLE_CONST(IS_EMPTY(__VA_ARGS__), __VA_ARGS__)
偶然发现了这个解决方案。只需改用它:
#define REFLECTABLE(...) \
REFLECTABLE_CONST(BOOST_PP_IS_EMPTY(__VA_ARGS__), __VA_ARGS__)
我有以下宏:
#define REFLECTABLE(...) \
REFLECTABLE_CONST(BOOST_PP_VARIADIC_SIZE(__VA_ARGS__)==0, __VA_ARGS__)
我运行预处理器。它传递给 REFLECTABLE_CONST
3==0
而不是 0
或 false
。在 REFLECTABLE_CONST
中,我使用该值来模拟 this post 中描述的条件。所以,我需要预处理器传递一个值。有没有办法让预处理器用 false
或 0
替换 3==0
之类的东西?
我无法重现 BOOST_PP_VARIADIC_SIZE
能够得到 0
的结果,但如果可以的话,这应该可行:
#define IS_EMPTY_IMPL0 1
#define IS_EMPTY_IMPL1 0
#define IS_EMPTY_IMPL2 0
#define IS_EMPTY_IMPL3 0
#define IS_EMPTY_IMPL4 0
#define IS_EMPTY_IMPL5 0
#define IS_EMPTY_IMPL6 0
#define IS_EMPTY_IMPL7 0
#define IS_EMPTY_IMPL8 0
#define IS_EMPTY_IMPL9 0
#define IS_EMPTY(...) BOOST_PP_CAT(IS_EMPTY_IMPL, BOOST_PP_VARIADIC_SIZE(__VA_ARGS__))
#define REFLECTABLE(...) \
REFLECTABLE_CONST(IS_EMPTY(__VA_ARGS__), __VA_ARGS__)
偶然发现了这个解决方案。只需改用它:
#define REFLECTABLE(...) \
REFLECTABLE_CONST(BOOST_PP_IS_EMPTY(__VA_ARGS__), __VA_ARGS__)