将模板类型传递给宏[重复]

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&lt;int,float&gt; T;,但我想知道是否可以在不引入另一种(可能是全局的)类型的情况下进行内联。

也许逗号可以被保护?

【问题讨论】:

__VA_ARGS__,或者引入COMMA宏.. 【参考方案1】:

你可以引入额外的宏:

#define COMMA ,

然后

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

【讨论】:

以上是关于将模板类型传递给宏[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为返回对的对创建模板类[重复]

模板类中的非模板函数[关闭]

将数据从 Blade 模板传递到 Vue 组件 [重复]

将模板化智能指针类型作为模板参数传递

向模板类传递通用方法的指针。

将 JSON 从烧瓶传递到模板并解码 html 实体 [重复]