#define MACRO(a) a
MACRO(ClassA<t1,t2>);
這種寫法會導致在VS2008(其他編譯器沒試過)編譯不過去
報錯的原因說宏超過了參數太多
很明顯是編譯器把用來分割模板的逗號誤解爲用來分割宏參數的了,在<>內的逗號應該算在同一個變量裏的
解決這個問題的辦法是採用typedef
typedef ClassA<t1,t2> newType;
MACRO(newType);
#define MACRO(a) a
MACRO(ClassA<t1,t2>);
這種寫法會導致在VS2008(其他編譯器沒試過)編譯不過去
報錯的原因說宏超過了參數太多
很明顯是編譯器把用來分割模板的逗號誤解爲用來分割宏參數的了,在<>內的逗號應該算在同一個變量裏的
解決這個問題的辦法是採用typedef
typedef ClassA<t1,t2> newType;
MACRO(newType);