Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
这里的语法有什么问题?我关注这个资源。
char x = 'a', y = 'a'; [&x,=y]() { // error: expected identifier before '=' token ++x; ++y; // error: 'y' is not captured }();
我使用 MinGW g++ 4.5.2 命令行编译器-std=c++0x
-std=c++0x
澄清:我想y通过价值。
y
char x = 'a', y = 'a'; [&x,y]() mutable{ ++x; ++y; }();
活生生的例子。
是正确的代码。要捕获变量按值,只需写下它的名称。为了允许修改按值捕获,lambda 需要被标记mutable,否则operator()被标记const。
mutable
operator()
const
§5.1.2 [expr.prim.lambda] p5
const[...]当且仅当lambda-expression的parameter-declaration-clause后面没有mutable时,才声明此函数调用运算符(9.3.1) 。[...]