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

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

如果您有一个很长的类型,在 shared_ptr 中,什么是 return 等效于空指针的最简单方法?在 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 {};

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

return nullptr;

可能比return {};

更清楚一点