std::tr1::function和它所接受的模板值

3

我在审核一些代码时发现了一行类似于以下的代码:

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++类型吗?有没有什么提示可以帮助我理解这个问题?
谢谢, 亚当

函数类型可以成为非常好的类型。 - eh9
1个回答

2

它被称为函数类型。

您无法创建它们的实例,但可以创建指向它们和typedefs的指针。

这个问题有一些见解:函数类型用于什么?


感谢您的回答,Pubby。直到现在,我从未知道在C++中可以指定未命名的函数类型。我通常使用typedef:typedef bool (* FnPtr)(int, int); 我确认我可以简单地将“bool (int, int)”作为模板类型传递,并且它按预期工作 - 模板类型是这些未命名函数类型唯一可用的地方吗? - Adam Forume
1
@AdamForume 我不知道它还有其他实际用途。 - Pubby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接