用值替换表达式
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
中,我使用该值来模拟本文中描述的条件。所以,我需要预处理器来传递一个值。有没有办法让预处理器用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__)
相关文章:
- C++正则表达式替换整个单词
- 用回调函数替换C++正则表达式
- 折叠表达式模板参数推导/替换失败
- 说编译器可以将下面的表达式"a->i"替换为其值 1 是否正确,因为...?
- 将一个特定字符替换为正则表达式匹配中的另一个字符
- 对 std::string 执行正则表达式搜索和替换
- Eclipse IDE,正则表达式搜索和替换
- 模板参数扣除/替换使用Lambda表达式使用高阶函数失败
- 使用提升C++通过正则表达式替换字符串
- Visual Studio正则表达式替换
- C++正则表达式替换第一个匹配项
- 使用正则表达式替换匹配项
- 有没有办法在一次迭代中进行任意数量的正则表达式替换
- 使用正则表达式替换 1 次迭代中的所有匹配项
- 如何使用增强正则表达式替换方法
- C++11 正则表达式替换
- 提高c++正则表达式替换性能
- 正则表达式替换文件扩展名前缀放置不起作用 - 替换匹配项
- 使用Boost c++库将正则表达式替换为自定义替换
- 使用正则表达式替换oracle中特殊字符之间的字符串