cpp/memory/enable shared from this

allows an object that is currently managed by a std named  to safely generate additional std instances  that all share ownership of  with.

Publicly inheriting from provides the type  with a member function. If an object of type  is managed by a  named, then calling  will return a new  that shares ownership of  with.