这个std :: function类似于

时间:2015-11-04 22:41:50

标签: c++

我正在练习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);

谢谢你,对不起英语。

1 个答案:

答案 0 :(得分:3)

std::function类型是函数指针的泛化。 C ++区分了函数,成员函数和函数对象(如果你还没有听说过最后一个,请查看它们!它们非常酷!),所以普通函数指针根本不能指向C ++中可以像函数一样调用的东西类型。 std::function本质上是一个类似于函数指针的类型,它可以指向您可以调用的任何函数。要使用std::function指向具有参数类型Arg1, Arg2, ..., ArgN并返回类型Ret的内容,请声明类型为

的变量
std::function<Ret (Arg1, Arg2, ..., ArgN)>