C ++ lambda捕获结果

时间:2019-11-14 06:00:12

标签: c++ lambda

例如,我有下一个代码:

int func() 
{
    int i = 0;
    int j = 0;
    auto lambda{[&](){ return i; }};
    return lambda();
}

是否还会通过引用捕获j或lambda仅捕获其使用的对象?

2 个答案:

答案 0 :(得分:6)

否,j将不会被捕获

来自Lambda capture文档:

  

&(通过引用隐式捕获 使用 自动变量)

请注意“二手”

答案 1 :(得分:4)

否,j将不会被捕获。

来自https://en.cppreference.com/w/cpp/language/lambda

  

捕获是逗号分隔的零个或多个捕获列表,   (可选)以capture-default开始。唯一的捕获   默认值为

     
      
  • &(通过引用隐式捕获使用的自动变量)和
  •   
  • =(通过复制隐式捕获使用的自动变量)。
  •