奇怪的 C++ lambda 形式

问题描述 投票:0回答:1

这个cppreference页面的例子中,有这行代码

[](...){}(n3, n4, x, r2);

“(n3, n4, x, r2)”是怎么回事? 因为在 this cppreference page 中,它说 lambda 的所有 8 种形式都应该以 { body } 结尾。

我尝试在网上搜索但没有成功。 预先感谢。

c++ lambda
1个回答
0
投票

首先,lambda 是

[](...){}

这是一个不捕获任何内容的 lambda,具有任何空函数块,

{}
,并使用 C 风格的可变参数函数参数来接受任意数量的参数。

整体

[](...){}(n3, n4, x, r2)

当您定义 lambda 并同时调用它时,即所谓的立即调用 lambda。 调用是

(n3, n4, x, r2)
,其中这 4 个变量被传递给 lambda,但由于 lambda 有一个空函数块,所以什么也没有发生。

© www.soinside.com 2019 - 2024. All rights reserved.