我正在练习lambdas,我找到了这段代码:
auto make_fibo()
{
return [](int n) {
std::function<int(int)> recurse;
recurse = [&](int n){
return (n<=2)? 1 : recurse(n-1) + recurse(n-2);
};
return recurse(n);
};
}
我不知道是不是这样,确切地说,不知道他std::function<int(int)> recurse;
并且在搜索和阅读之后:
http://www.cplusplus.com/reference/functional/function/
我的问题是?这个std :: function类似于这个例子:typedef int (*FredMemFn)(int i);
谢谢你,对不起英语。
答案 0 :(得分:3)
std::function
类型是函数指针的泛化。 C ++区分了函数,成员函数和函数对象(如果你还没有听说过最后一个,请查看它们!它们非常酷!),所以普通函数指针根本不能指向C ++中可以像函数一样调用的东西类型。 std::function
本质上是一个类似于函数指针的类型,它可以指向您可以调用的任何函数。要使用std::function
指向具有参数类型Arg1, Arg2, ..., ArgN
并返回类型Ret
的内容,请声明类型为
std::function<Ret (Arg1, Arg2, ..., ArgN)>