你知道,我们可以包装或存放lambda函数的std::function
:怎样的std ::功能工作
#include <iostream>
#include <functional>
int main()
{
std::function<float (float, float)> add = [](float a, float b)
// ^^^^^^^^^^^^^^^^^^^^
{
return a + b;
};
std::cout << add(1, 2) << std::endl;
}
我的问题是围绕std::function
,你可以看到它是一个模板类,但它可以接受任何种类的函数签名。
例如float (float, float)
以这种形式return_value (first_arg, second_arg)
。
std::function
的结构是什么,它如何接受函数签名,如x(y,z)
以及它如何使用它? float (float, float)
是C++中一个新的有效表达式吗?
在C++中查找类型擦除。 – 2013-02-18 12:50:26
你可以随时打开你的编译器的''头文件(我相信所有的主要编译器都会将std头文件作为C++代码)并检查它,或者查看[Boost.Function](http://www.boost.org/doc) /libs/1_53_0/doc/html/function.html)。 –
Angew
2013-02-18 12:52:00
@Angew:是的,很有教育意义,+1。我认为'std :: function'涉及到C++语言的各个方面...... – 2013-02-18 12:54:36