Use std::make_shared to allocate std::shared_ptr's