C++ 可变参数宏编译错误。

3

在stackoverflow的问题“带有零个参数和逗号的变参宏”中,我尝试了以下代码:

#define MAKE_TEMPLATE(...) template <typename T, ## __VA_ARGS__ >

MAKE_TEMPLATE()
struct Testing{};

编译器报错: 错误:在'>'标记前需要标识符

但是g++ -E main.cpp(用于获取宏扩展) 显示:

template <typename T >
struct Testing{};

同时使用:

MAKE_TEMPLATE(typename U)
struct Testing{};

编译成功了,还缺什么吗?


但GCC文档中指出:如果省略或为空的可变参数,'##'运算符会导致预处理器在其前移除逗号。 - Patric
1个回答

3

有其他选择吗? - Patric

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接