解释此Concurrency :: Task调用中的“=”符号参数

时间:2015-12-29 04:35:54

标签: c++ windows concurrency task ppl

有人可以向我解释一下这个代码中使用了'='参数吗? 我可以使用哪些其他参数代替=?它会有什么不同? MSDN对此问题不是很清楚。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

•[&amp;]表示外部作用域通过引用传递给lambda。因此,只要您具有写入权限,就可以对定义lambda时有效的所有数据进行写访问。