请教下 lambda 函数的捕获值列表
資深大佬 : auto8888 0
class Testc { public: void fun1(int *&p) { p = new int(); *p =2; } void fun2() { std::thread t([=] {(fun1)( p);}); if(t.joinable()) t.detach(); } int *p; };
fun1 的参数是引用传递,为什么 fun2 用[=]捕获也编译通过,特殊在于参数是类的成员。
如果把 fun1 移到全局函数,为什么 fun2 用[this]捕获也编译通过
void fun1(int *&p) { p = new int(); *p =2; } class Testc { public: void fun2() { std::thread t([this] {(fun1)( p);}); if(t.joinable()) t.detach(); } int *p; };
就有点懵逼了
大佬有話說 (4)