为什么 boost 示例再次调用 `shared_from_this()` 而不是使用闭包变量
Why the boost example calls `shared_from_this()` again instead of using the closure variable
在 boost asio HTTP server example in methods do_read
and do_write
the shared_from_this()
is captured to address the connection object lifespan issue, as been answered previously 处的连接对象中。仍然不清楚为什么在第 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());
```
这没有实际原因(我想这只是重构为 C++11 样式的旧 C++03 示例的遗留问题)。使用 self
会更好,因为它已经被捕获了。
我能想到的唯一 "educational" 原因可能是证明显式捕获的 self
存储在 lambda 中,即使它未被使用。
在 boost asio HTTP server example in methods do_read
and do_write
the shared_from_this()
is captured to address the connection object lifespan issue, as been answered previously 处的连接对象中。仍然不清楚为什么在第 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());
```
这没有实际原因(我想这只是重构为 C++11 样式的旧 C++03 示例的遗留问题)。使用 self
会更好,因为它已经被捕获了。
我能想到的唯一 "educational" 原因可能是证明显式捕获的 self
存储在 lambda 中,即使它未被使用。