int AsyncUpdator::EnqueueTask(TaskInfo task_info) {
- auto task = [=] {
- this->DoTask(task_info);
- };
+ auto task = std::bind(AsyncUpdator::DoTask, task_info);
return 0;
}
struct TaskInfo {
GetRequest get_request; // this is a protobuffer structure
uint64_t log_id;
};
读取行会导致问题,但绿线不会吗?
答案 0 :(得分:1)
在第一个选项中,auto task = [=] () {};
捕获局部变量作为副本,而std::bind
捕获您的task_info
作为右值引用,并使用转发将其传递给函数作为引用。
如果您不想使用std::bind
,请切换lamba以通过引用进行捕获,例如auto task = [&] () {};
。