Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the reason of using auto self(shared_from_this()) variable in lambda function?

I read the boost asio http server example code (see http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/example/cpp11/http/server/connection.cpp) and find the auto self(shared_from_this()); variable is been used in the capture scope ([this, self]). But the self variable is not been used in the lambda function. Then what's the benefit of doing so?

like image 410
injoy Avatar asked Oct 14 '13 19:10

injoy


1 Answers

This is done in order to make sure that connection object outlives the asynchronous operation: as long as the lambda is alive (i.e. the async. operation is in progress), the connection instance is alive as well.

like image 100
Igor R. Avatar answered Sep 19 '22 18:09

Igor R.