例如,我有下一个代码:
int func()
{
int i = 0;
int j = 0;
auto lambda{[&](){ return i; }};
return lambda();
}
是否还会通过引用捕获j
或lambda仅捕获其使用的对象?
答案 0 :(得分:6)
答案 1 :(得分:4)
否,j
将不会被捕获。
来自https://en.cppreference.com/w/cpp/language/lambda:
捕获是逗号分隔的零个或多个捕获列表, (可选)以capture-default开始。唯一的捕获 默认值为
- &(通过引用隐式捕获使用的自动变量)和
- =(通过复制隐式捕获使用的自动变量)。