2013-08-12 129 views
1

继计算器问题:“复杂的宏零个参数和逗号”,我想:C++可变参数宏编译错误

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

MAKE_TEMPLATE() 
struct Testing{}; 

编译器会发出:错误:预期标识符之前“>”令牌

但是克++ -E main.cpp中(以获得宏展开)显示:

template <typename T > 
struct Testing{}; 

甲nd用:

MAKE_TEMPLATE(typename U) 
struct Testing{}; 

它编译OK。 缺少什么?

+0

但GCC文档说: “如果可变参数被省略或空的,则‘##’操作者使预处理以除去在它之前的逗号“ – Patric

回答