【问题标题】:Template function in define定义中的模板函数
【发布时间】:2011-02-24 20:44:00
【问题描述】:

我有一些模板函数,我想在 C++ 中使用定义来调用它:

#define CONFIG(key, type, def) getValue<type>(key, def);

当然,这是行不通的。我可以做这样的事情吗?

【问题讨论】:

  • 真正的问题当然是为什么要使用宏...?此外,如果您的任何参数需要逗号,您将遇到麻烦:x

标签: c++ templates macros c-preprocessor


【解决方案1】:

效果很好:

template<typename T>
T getValue( int, int ) { return T(); }

#define CONFIG(key, type, def) getValue<type>(key, def);


int main()
{
    CONFIG(1, int, 2);
    return 0;
}

【讨论】:

  • 我可以在定义中使用默认值吗?喜欢:#define CONFIG(key, type, def="") ...?
  • 否 - 在这种情况下,您需要在模板本身中定义默认值,假设您可以控制代码。
  • 如果没有,请编写另一个使用默认模板的模板,并让您的宏引用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多