在lambda表达式中捕获变量,修改它,但编译时候报错了
#include <thread>
#include <iostream>
int main()
{
int testVal = 0;
std::thread thread1([testVal]()
{
testVal = 1;
std::cout << "lambda thread called." << std::endl;
});
thread1.join(); // 等待线程结束
return 0;
}
或者类似
查看文档:
Lambda expressions (since C++11) - cppreference.com
说的是,默认捕获的会是带const的变量,除非指定mutable
于是指定mutable