Zastanawiam się kiedy warto korzystać z std::/boost::enable_shared_from_this i jedyne sensowne zastosowanie jakie widzę, to sytuacja kiedy dana klasa przesyła std::shared_ptr (na siebie) gdzieś dalej (np. do innej metody, albo jakiejś funkcji) - przykładowo boost.asio często korzysta z tego mechanizmu. Przykład:
#include <iostream>
#include <memory>
struct A;
void foo(std::shared_ptr<A> a)
{
std::cout << a.use_count() << std::endl;
}
struct A : std::enable_shared_from_this<A>
{
void foo()
{
::foo(shared_from_this());
}
};
int main()
{
std::shared_ptr<A> a(new A);
a->foo();
return 0;
}
Ok, to jest oczywiste. Pomijając powyższe zastosowanie, czy są jeszcze jakieś sytuacje, w których warto stosować enable_shared_from_this ?