lambda表达式中的值引用的值默认是在表达式定义的时候创建的,但可以定义为可修改的形式。
void func(){
size_t v1 = 42; //局部变量
//f可以改变它所捕获的变量的值
auto f = [v1] () mutable {return ++v1;};
v1 = 0;
auto j = f(); //j为43
}
虽然不是很理解到底发生了什么,但还是可以接受的。
lambda表达式中的值引用的值默认是在表达式定义的时候创建的,但可以定义为可修改的形式。
void func(){
size_t v1 = 42; //局部变量
//f可以改变它所捕获的变量的值
auto f = [v1] () mutable {return ++v1;};
v1 = 0;
auto j = f(); //j为43
}
虽然不是很理解到底发生了什么,但还是可以接受的。