2017-05-30 66 views
3

我有一個宏需要一些參數,其中之一是一個類型。例如:將模板類型傳遞給一個宏

#define macro(T,x) T x 

如果我嘗試用一​​個模板類型實例化這個,說:

macro(Type<int,float>,var); 

如預期這不會工作,因爲預處理器一無所知的模板。它將解析它爲三個參數:

macro(
    Type<int, 
    float>, 
    var 
); 

See also full example.

有沒有辦法解決?我使用了typedef Type<int,float> T;,但我想知道是否可以在不引入其他(可能是全局的)類型的情況下進行內聯。

也許逗號可以被守衛?

+0

'__VA_ARGS__',或引入'COMMA'宏.. – Jarod42

回答

4

您可能會引入額外的宏:

#define COMMA , 

然後

macro(Type<int COMMA float>,var);