语法help:由方括号括起的函数指针

时间:2018-03-05 21:47:47

标签: c++11 function-pointers

我对下面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; } );

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

1 个答案:

答案 0 :(得分:1)

where not(t1.CustID like substr(t2.customer_external.external_customer_code,length(t2.customer_external.external_customer_code)- 5)) lambda expression(请查看该页底部的示例)。

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

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

  • ()是lambda函数的主体。

通过电话

{ return anotherFunction(funcParam()); }
使用另一个lambda表达式作为参数调用

create( [] () { return CONSTANT; } ); 。那个lambda参数

  • 没有抓取任何内容:create
  • 没有参数:[]
  • 有身体:()