在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{};
它编译确定。少了什么东西?