在Boost.Asio的C++ 11分的例子有段like the following:爲什麼要在lambdas中捕獲這個以及共享指針?
void do_read()
{
auto self(shared_from_this());
socket_.async_read_some(boost::asio::buffer(data_, max_length),
[this, self](boost::system::error_code ec, std::size_t length)
{
if (!ec)
{
do_write(length);
}
});
}
我理解爲什麼需要self
指針以保持類活着(見this question),但我不明白爲什麼this
指針也捕獲。僅僅是爲了讓作者可以寫do_write(length)
而不是self->do_write(length)
還是有其他原因?
一句話:方便。 – sehe