1

有人可以向我解释这段代码中“=”参数的用途吗?我可以使用哪些其他参数来代替=?它会有什么不同?MSDN 在这个问题上不是很清楚。

//Declaration
auto prerequisite = task<void>([](){});

//Here is where I don't understand the '=' parameter
prerequisite.then([=](task<void> prerequisite){/*custom code goes here*/})
4

1 回答 1

0

在 lambda 引入器(lambda 开头的括号)内,您可以指定捕获以访问未作为参数传递的外部范围的数据:

• [=] 表示外部作用域按值传递给 lambda。因此,您可以读取但不能修改定义 lambda 的所有可读数据。

• [&] 表示外部作用域通过引用传递给lambda。因此,您对定义 lambda 时有效的所有数据具有写访问权限,前提是您在那里具有写访问权限。

于 2015-12-29T04:40:22.040 回答