发现VS2008的模板多参数和宏结合到一起使用时的BUG

来源:互联网 发布:java用递归走迷宫 编辑:程序博客网 时间:2024/05/29 14:32

#define MACRO(a) aMACRO(ClassA<t1,t2>);

这种写法会导致在VS2008(其他编译器没试过)编译不过去

报错的原因说宏超过了参数太多

很明显是编译器把用来分割模板的逗号误解为用来分割宏参数的了,在<>内的逗号应该算在同一个变量里的

解决这个问题的办法是采用typedef

typedef  ClassA<t1,t2> newType;MACRO(newType);