在被lambda表达式引用的变量上使用引用传递来延长变量的生命周期。
示例代码:
#include
#include
using namespace std;
int main() {
int x = 0;
function lambda;
{
int y = 42;
lambda = [&]() {
cout << "x: " << x << endl;
cout << "y: " << y << endl;
};
}
x = 1;
lambda(); // 输出x: 1,y: 42,y已经过期
return 0;
}
如果不使用延长生命周期的方式,输出将会是不可预知的:y的生命周期在lambda表达式定义后立即结束,因此引用y可能会导致未定义的行为。使用引用传递来延长y的生命周期可以确保这种情况不会发生,从而保证lambda表达式的正确性。