【发布时间】:2021-04-01 15:28:15
【问题描述】:
例如,我有这样的代码:
#define LIST_A \
Element1 \
Element2 \
Element3
#define LIST_B \
Element4 \
Element5
// I'd like to perform some operations on tuples of LIST_A * LIST_B
// That is a set of tuples {(1, 4), (1, 5), (2, 4), (2, 5), (3, 4), (3, 5)}
我面临的真正问题是我有一些 C++ 模板函数,例如:
// Left, Right, Result can be any numeric types
template <typename Left, typename Right, typename Result>
struct Function
{
void apply(const Left & lhs, const Right & rhs, Result & res);
};
我想用尽Function 的专业化空间。
例如我有以下输入数据类型:
#define LEFT_TYPE_LIST\
int32_t \
int64_t
#define RIGHT_TYPE_LIST\
uint32_t \
uint64_t
我想将LEFT_TYPE_LIST 和RIGHT_TYPE_LIST 申请到Function<Left, Right, Result>。
有没有实用的方法来实现这个?
【问题讨论】:
-
由于您使用的是 C++,您是否有特定的原因要使用宏来执行此操作?
标签: c++ macros c-preprocessor