我对下面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; } );
有人可以解释在这两种情况下使用括号吗?在调用代码中,它看起来用于创建没有名称的函数。它在第一部分做了什么?谢谢!
答案 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
[]
()