Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 此std::函数类似于_C++ - Fatal编程技术网

C++ 此std::函数类似于

C++ 此std::函数类似于,c++,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::

我在练习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类型是函数指针的泛化。C++在函数、成员函数和函数对象之间进行区分(如果你还没有听说过最后一个,那么就去查一下!它们是超级酷的)!所以,普通函数指针不能指向C++中所有可以调用的函数类型。code>std::function本质上是一种类似于函数指针的类型,它可以指向任何可以调用的函数。要使用
std::function
指向具有参数类型
Arg1、Arg2、…、ArgN
和返回类型
Ret
的对象,请声明类型为

std::function<Ret (Arg1, Arg2, ..., ArgN)>
std::函数

我不知道,但现在我认为这非常好,语法非常清晰,谢谢您的回复
std::function<Ret (Arg1, Arg2, ..., ArgN)>