语法帮助:方括号括起来的函数指针[重复]
Posted
技术标签:
【中文标题】语法帮助:方括号括起来的函数指针[重复]【英文标题】:Syntax help: Function pointer surrounded by square brackets [duplicate] 【发布时间】:2018-03-05 21:47:46 【问题描述】:我对在下面的 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; );
有人可以解释在这两种情况下括号的使用吗?在调用代码中,它看起来被用来创建一个没有名称的函数。它在第一部分做什么?谢谢!
【问题讨论】:
这称为 lambda 表达式。谷歌“C++ 11 lambda”,你会发现很多信息。 正是我需要的,谢谢! (如果没有“lambda”,很难搜索到这个)。 【参考方案1】:create_evaluator
是 lambda expression(查看该页面底部的示例)。
如果是
auto create_evaluator = [funcParam] ()
return anotherFunction(funcParam());
;
[funcParam]
是本地范围内的变量,由 lambda 函数捕获,因此可在 lambda 函数在其他地方调用时被引用。
()
表示 lambda 函数的参数(本例中没有)
return anotherFunction(funcParam());
是 lambda 函数的主体。
随叫随到
create( [] () return CONSTANT; );
create
以另一个 lambda 表达式作为参数调用。那个 lambda 参数
[]
没有参数:()
有正文: return CONSTANT;
【讨论】:
以上是关于语法帮助:方括号括起来的函数指针[重复]的主要内容,如果未能解决你的问题,请参考以下文章