为什么boost示例再次调用`shared_from_this()`而不是使用闭包变量

弗拉德·迪登科

在该连接对象升压ASIO HTTP服务器实例的方法do_read,并do_writeshared_from_this()捕捉到地址的连接对象的寿命问题,如先前回答仍然不清楚为什么在第67和88行中代码shared_from_this()再次调用,而不是使用self

40  auto self(shared_from_this());
41  socket_.async_read_some(boost::asio::buffer(buffer_),
42      [this, self](boost::system::error_code ec, std::size_t bytes_transferred)
43      {
....
67          connection_manager_.stop(shared_from_this());
```
伊戈尔·R。

没有实际的原因(我想这只是从旧的C ++ 03示例重构为C ++ 11样式后得到的结果)。使用self将是更可取的,因为它已经被捕获了。

我能想到的唯一“教育”原因可能是为了证明显式捕获的self内容存储在lambda中,即使未使用也是如此。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么调用shared_from_this会调用std :: terminate

为什么编译的Angular代码使用闭包而不是类?

为什么要使用IFFE闭包而不是常规闭包?

为什么在使用HashMap的or_insert时调用闭包?

为什么闭包变量不被遗忘?

Gradle Copy 任务:为什么可以使用可以调用“into”方法的配置闭包来调用“from”方法?

在闭包中,为什么每次调用主变量时都不会重置主变量?

从技术角度来看,为什么不能在构造函数中使用shared_from_this?

使用 setTimeout 无法识别函数调用的闭包示例

为什么在闭包参数中使用“ &&”?

为什么要使用闭包进行分配,而不是直接为键分配值?

为什么我仍然可以使用`move`闭包捕获的变量?

为什么Elixir允许使用未定义变量的闭包?

为什么Python无法在闭包中增加变量?

为什么不能将变量移出闭包?

为什么不通过闭包定义此变量?

为什么在闭包 Laravel 中未定义变量?

为什么 FnMut 闭包会消耗捕获的变量?

使用python的starmap时,为什么使用闭包传入的变量位置与使用partial传入的变量位置不同?

为什么“ for .. in”允许闭包?

为什么jenkinsfile以这种方式使用闭包?

在此代码中,为什么要使用闭包?

为什么要在代码中考虑使用JavaScript闭包?

如何调用函数而不是实现闭包

在将闭包传递给 gradle 扩展时,为什么闭包的所有者不是主要的 Projects 对象?

Google闭包为什么不编译将重复使用的索引保留在变量中?

使用 shared_from_this 生成函子

为什么再次调用getInitialState?

为什么此闭包调用不会以递归调用结尾?