發現VS2008的模板多參數和宏結合到一起使用時的BUG

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

這種寫法會導致在VS2008(其他編譯器沒試過)編譯不過去

報錯的原因說宏超過了參數太多

很明顯是編譯器把用來分割模板的逗號誤解爲用來分割宏參數的了,在<>內的逗號應該算在同一個變量裏的

解決這個問題的辦法是採用typedef

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章