【问题标题】:std::tr1::function and the template value it acceptsstd::tr1::function 和它接受的模板值
【发布时间】:2012-11-28 19:46:20
【问题描述】:

我正在查看一些代码并遇到类似于以下内容的行:

std::tr1::function<bool (int, int)>(//etc...

模板类型bool (int, int) 的语法对我来说并不熟悉。基于谷歌搜索,在std::tr1::function 的情况下,这种语法似乎用于定义函数的返回类型和参数。这是有道理的,但为什么这种语法有效?据我所知,C++模板只能指定类型?

我试图在代码中实例化该类型的实例:

bool (int, int) test;

正如我所料,语句编译失败。至少,语法需要类似于: bool (test)(int, int);

bool (int, int) 是否被视为 C++ 类型?有什么建议可以在我的脑海中调和吗?

谢谢, 亚当

【问题讨论】:

  • 函数类型是非常好的类型。

标签: c++ tr1


【解决方案1】:

称为函数类型。

您不能创建它的实例,但可以创建指向它们的指针和 typedef。

这个问题有一些见解:What is a function type used for?

【讨论】:

  • 感谢您的回答,Pubby。直到现在,我都不知道可以在 C++ 中指定未命名的函数类型。我通常使用 typedef:typedef bool (* FnPtr)(int, int); 我确认我可以简单地将“bool (int, int)”作为模板类型传递并且它按预期工作——模板类型是唯一可以使用这些未命名函数类型的地方?
  • @AdamForume 我不知道它还有什么其他实际用途。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
相关资源
最近更新 更多