std::unique_ptr std::share_ptr std::weak_ptr
std::make_unique std::make_shared enable_shared_from_this