Не понятно работающая логика удаления объекта
Изучаю работу простого сервера на boos::asio. Один из примеров работы с ним я нашел тут: https://www.boost.org/doc/libs/1_78_0/doc/html/boost_asio/example/cpp11/echo/async_tcp_echo_server.cpp Однако в примере мне не понятно поведение программы в функции void do_accept(), а именно в строке
if(!ec){
std::make_shared<session>(std::move(socket))->start();
}
Тут создается shared_ptr и у объекта вызывается метод start. После выхода из блока этот умный указатель должен быть уничтожен, однако этого не происходит. В чем причина?