在C++14/17中,如何在lambda作用域之外访问初始化的变量?
来源:
来源:
#include <iostream>
using namespace std;
int main(){
auto test = [value1 =0]() mutable {value1+=1; return value1;};
cout << test() << endl;
cout << test() << endl;
//cout << value1 << endl;//error: ‘value1’ was not declared in this scope
}
输出:
1
2
value1
变量是否可以在test()
lambda的作用域之外访问?lambda捕获初始化变量的生命周期是什么?
尝试在lambda之外访问value1
会出现以下错误:error: ‘value1’ was not declared in this scope
。
使用gcc版本7.3.0编译(Ubuntu 7.3.0-21ubuntu1~14.04)。