C++ 11 lambdas和方括号

anh*_*ppe 14 c++ syntax lambda c++11

看看这个示例lambda:

[](int factor)->int{return factor*factor;}
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释一下C++ 11 lambda表达式前面的方括号是什么有用吗?

svk*_*svk 14

方括号指定lambda"捕获"哪些变量,以及如何(通过值或引用).

捕获意味着您可以从lambda内部引用lambda外部的变量.如果按值捕获,则将在创建lambda时获取变量的值 - 类似于通过值将参数传递给函数.如果通过引用捕获,您将引用lambda之外的实际变量(并且您需要确保它保持在范围内).

请注意,在类中,您可以捕获"this",然后像在类方法中一样调用类方法.