在C++11中,[=]
是lambda函数的捕获列表的一部分,代表按值捕获所有父作用域的变量¹³。这意味着,lambda函数可以访问其定义处作用域中的所有变量,但是它对这些变量的修改不会影响到原始变量¹。
例如:
int a = 1;
auto func = [=]() { return a + 1; };
在上述代码中,func
是一个lambda函数,它按值捕获了变量a
。当调用func()
时,它会返回2
。但是,即使我们在lambda函数内部尝试修改a
的值,也不会影响到原始变量a
的值¹。
需要注意的是,如果你想在lambda函数内部修改捕获的变量,并且希望这些修改能够影响到原始变量,你需要使用引用捕获,即使用[&]
而不是[=]
¹。例如:
int a = 1;
auto func = [&]() { a = a + 1; };
在上述代码中,当调用func()
后,原始变量a
的值将会被修改为2
¹。