【发布时间】:2017-06-18 09:04:02
【问题描述】:
我想知道是否可以通过 Boost Preprocessor 序列完成以下操作。 (大多数 SO 问题以及 Boost Preprocessor 示例只讨论 1 个序列)
#define seq1 (a)(b)(c)
#define seq2 (1)(2)(3)
// Now iterate over both of them at the same time
这是我的动机。我必须为很多类型定义几个函数,例如
void add(int val) { obj.AddInt(val); }
void add(double val) { obj.AddDouble(val); }
我正在考虑定义两个序列,例如
#define types (int)(double)...
#define funcs (AddInt)(AddDouble)...
然后为函数add写一个宏,遍历这两个序列。
【问题讨论】:
-
为什么不是一个元组序列?例如。
((int, AddInt), (double, AddDouble))... -
我实际上有 3-4 个序列,我已经阅读了这个问题:stackoverflow.com/questions/26475453/… 我想这可能可以做到,但想知道是否有一种方法可以迭代多个序列,因为这些宏序列已经定义了。
-
快速搜索显示有一个带有 zip 宏的库:github.com/mcinglis/libpp/blob/master/zip.h
标签: c++ c boost c-preprocessor boost-preprocessor