C++ lambda可以捕获静态变量,但要注意捕获方式的正确性。静态变量是全局变量的一种,因此lambda可以通过捕获方式来使用静态变量。
静态变量可以通过引用捕获或者复制捕获的方式被lambda捕获。引用捕获会直接引用静态变量,而复制捕获会将静态变量的当前值复制一份给lambda。
例如,以下是一个捕获静态变量的lambda示例:
#include <iostream>
void testLambda() {
static int staticVar = 10;
auto lambda = [&staticVar]() {
std::cout << "Static variable value: " << staticVar << std::endl;
};
lambda();
}
int main() {
testLambda();
return 0;
}
在这个示例中,lambda通过引用捕获了静态变量staticVar
,并打印了它的值。注意,在lambda内部访问静态变量时,需要确保静态变量在lambda调用时仍然有效。
总而言之,C++ lambda可以捕获静态变量,但需要注意捕获方式的正确性和静态变量的生存期。