C++ – What’s the reason of using auto self(shared_from_this()) variable in lambda function

boostboost-asiocc++11lambda

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?

Best Answer

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.

Related Topic