C++11 lambda : mixed capture list

标签 c++ c++11 lambda

谁能给我看以下示例:

1) 按值捕获 x 的 Lambda。 y 引用。如果未指定,其余部分的默认设置是什么?

2) 按值捕获 x 的 Lambda。 y 引用,其他的都是值。

3) 按值捕获 x 的 Lambda。 y 引用,其他所有引用。

另外,是否允许同一范围内的 2 个 lambda 具有相同的捕获签名,例如两者都是 [],或者都是 [&x, =]

谢谢

最佳答案

1) [x, &y](){} 未捕获其余部分

2) [=, &y](){}

3) [&, x](){}

The capture-list is a comma-separated list of zero or more captures, optionally beginning with the capture-default. The only capture defaults are & (by reference) and = (by value). If a capture-default is used, no other captures may use the same capture type. Any capture may appear only once.

另外,是否允许同一作用域内的 2 个 lambda 具有相同的捕获签名,例如都为 [],或者都为 [&x, =]

当然是允许的。每个 lambda 都将是不同的对象并具有其不同的类型。如果你在两个 lambda 中按值捕获变量,那么每个 lambda 都会有它的拷贝。如果您在两个 lambda 中通过引用捕获变量,那么每个 lambda 都会引用同一个捕获的变量。

关于C++11 lambda : mixed capture list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31998613/

相关文章:

c# - 在 C# 中将 Func<T1,bool> 转换为 Func<T2,bool>

C++ vector 复制适用于一个 vector ,但不适用于另一个 vector

c++ - 图像仅在某些部分模糊而不是全部

c++ - 模板化函数名称查找难题(ADL)

c++11 - 强制复制构造函数

c# - 发现 op_Addition 或实现 Expression.Add 的方法

c++ - 输入问题

c++ - g++ 是否满足 std::string C++11 要求

c++ - Qt 5.3 连接 lambda

java - 在流操作中使用方法引用和函数对象之间的区别?