创建空shared_ptr的最简单方法是什么?

What's the easiest way to create an empty shared_ptr?

本文关键字:最简单 方法 是什么 ptr shared 创建      更新时间:2023-10-16

如果在shared_ptr中有一个相当长的类型,那么返回等效于空指针的最简单方法是什么?在C++03中,我做了以下工作,但我想知道C++11是否引入了更好的替代方案?

std::shared_ptr<
    std::vector<std::pair<int, std::map<std::string, std::string>>>
> getComplicatedType()
{
    // Do some checks, can't create type, so return an empty shared_ptr
    return std::shared_ptr<
        std::vector<std::pair<int, std::map<std::string, std::string>>>
    >();
}

我知道你可以使用typedef为类型创建一个别名,但我正在寻找一个更好的解决方案,编译器可以自动推导类型。

return nullptr;

可能比return {}; 更清晰

return {};

此值初始化返回类型,在智能指针的情况下,返回类型会将其初始化为null。