语法帮助:用方括号括起来的函数指针

Syntax help: Function pointer surrounded by square brackets

我对下面 C++11 代码段中 [funcParam] 周围方括号的使用感到困惑:

typedef std::function<std::vector<OtherType> ()> FuncPtr;

inline void create(FuncPtr funcParam)
{
    auto create_evaluator = [funcParam] ()
    {
        return anotherFunction(funcParam());
    };
    // ...
}

此行调用的上面的代码(为了保持可读性而进行了一些简化):

create( [] () { return CONSTANT; } );

谁能解释一下这两种情况下括号的用法?在调用代码中,它看起来用于创建一个没有名称的函数。它在第一部分中做什么?谢谢!

create_evaluator 是一个 lambda expression(查看该页底部的示例)。

的情况下
auto create_evaluator = [funcParam] ()
{
    return anotherFunction(funcParam());
};
  • [funcParam] 是局部范围内的变量,由 lambda 函数捕获,因此在其他地方调用时可在 lambda 函数中引用。

  • () 表示 lambda 函数的参数(在本例中为 none)

  • { return anotherFunction(funcParam()); } 是 lambda 函数的主体。

随叫随到

create( [] () { return CONSTANT; } );

create 以另一个 lambda 表达式作为参数调用。那个 lambda 参数

  • 没有捕捉到任何东西:[]
  • 没有参数:()
  • 有正文:{ return CONSTANT; }