W latach Boost.asio C++ 11 przykładów są fragmenty like the following:Dlaczego przechwytywać to, a także współdzielić wskaźnik do tego w lambdach?
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);
}
});
}
rozumiem dlaczego jest potrzebny wskaźnik self
zachować klasę żywy (patrz this question), ale nie rozumiem, dlaczego this
Wskaźnik jest również przechwycony. Czy to jest tak, że autor może napisać do_write(length)
zamiast self->do_write(length)
lub jest inny powód?
Jednym słowem: wygoda. – sehe