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 ?