将模板类型传递给宏[重复]
Posted
技术标签:
【中文标题】将模板类型传递给宏[重复]【英文标题】:Passing a template type into a macro [duplicate] 【发布时间】:2017-05-30 17:21:56 【问题描述】:我有一个带有多个参数的宏,其中一个是类型。例如:
#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;
,但我想知道是否可以在不引入另一种(可能是全局的)类型的情况下进行内联。
也许逗号可以被保护?
【问题讨论】:
__VA_ARGS__
,或者引入COMMA
宏..
【参考方案1】:
你可以引入额外的宏:
#define COMMA ,
然后
macro(Type<int COMMA float>,var);
【讨论】:
以上是关于将模板类型传递给宏[重复]的主要内容,如果未能解决你的问题,请参考以下文章