Nel Boost.asio C++ 11 esempi ci sono frammenti like the following:Perché catturare questo e condiviso-pointer-to-this in lambda?
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);
}
});
}
capisco perché il puntatore self
è necessaria per mantenere in vita (vedi this question) la classe, ma non capisco il motivo per cui il Il puntatore this
è anche catturato. È così che l'autore può scrivere do_write(length)
invece di self->do_write(length)
o c'è un altro motivo?
In una parola: convenienza. – sehe