如果有一函数,经常被调用,里面有一个变量,需要进行一个操作,假定这个操作是异步的,是网络方面进行回叫。
int foo(.) {
int value = 0;
var waiter=...
important_call([&waiter, &value](int update){
// when call back, will destruct waiter
value = update;
waiter.Cancel();
}
waiter.Wait(deadline);
return value;
}
那么,如果超时后,函数返回了0,然后lambda才被呼叫,这个时候waiter已经消失了,是不是?
--
修改:bihai FROM 98.42.143.*
FROM 98.42.143.*