在这个cppreference页面的例子中,有这行代码
[](...){}(n3, n4, x, r2);
“(n3, n4, x, r2)”是怎么回事? 因为在 this cppreference page 中,它说 lambda 的所有 8 种形式都应该以 { body } 结尾。
我尝试在网上搜索但没有成功。 预先感谢。
首先,lambda 是
[](...){}
这是一个不捕获任何内容的 lambda,具有任何空函数块,
{}
,并使用 C 风格的可变参数函数参数来接受任意数量的参数。
整体
[](...){}(n3, n4, x, r2)
当您定义 lambda 并同时调用它时,即所谓的立即调用 lambda。 调用是
(n3, n4, x, r2)
,其中这 4 个变量被传递给 lambda,但由于 lambda 有一个空函数块,所以什么也没有发生。