语法帮助:用方括号括起来的函数指针
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; }
我对下面 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; }