我有与此类似的C ++ 14代码:
void C::f() {
  int& ref = this->x;
  auto lb = [&ref]() {
    /* do stuff with "ref" */
  };
  if (foobar) {
    // call lb when signal fires. 
    connect(object, &D::signal, [&lb]() {
      lb();
    });
  } else {
    lb();
  }
}
我知道到我使用时lb,它this仍然有效。但是ref和lb。上面的代码有悬挂的参考吗?
lb 具有自动存储功能,因此当此函数返回时,对其的引用将无效。   
的有效性ref取决于的生存期*this。
(lambda不是ref通过引用捕获变量,而是在捕获对引用对象的ref引用。)
| 归档时间: | 
 | 
| 查看次数: | 161 次 | 
| 最近记录: |