【发布时间】:2017-05-19 16:50:31
【问题描述】:
说我有表单的实例
template void MyClass<2,typeA>::some_method() const;
用于模板参数的各种组合。
我正在尝试定义一个带有 boost 的宏,它需要一个前缀 (void) 和一个后缀 some_method() const,以便我可以将它重用于显式实例化。
使用硬编码的返回类型和函数名称,可以按照以下方式完成(尚未测试过):
#define DIM (2)(3)
#define DEG (typeA)(typeB)
#define INSTANTIATEONE(_, targs) void MyClass<BOOST_PP_SEQ_ENUM(targs)>::some_method() const;
#define INSTANTIATEALL() BOOST_PP_SEQ_FOR_EACH_PRODUCT(INSTANTIATEONE, (DIM)(DEG));
有没有办法扩展宏以将void 和some_method() const 作为参数?我是增强预处理器的新手,不知道该怎么做。
【问题讨论】:
标签: c++ templates boost instantiation