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

Explain the "=" sign parameter in this Concurrency::Task call

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

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

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

在lambda introducer(lambda开头的括号)中,你可以指定一个捕获到 访问未作为参数传递的外部范围的数据:

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

• [&] 表示外部作用域通过引用传递给lambda。因此,如果您在此处具有写入权限,则您拥有对定义 lambda 时有效的所有数据的写入权限。