Pet*_*her 1 c++ language-design shared-ptr
这是一个关于理解设计决策的问题,而不是对错误或缺陷的抱怨。
在C++标准库中,创建共享指针及其对象的函数是直函数,
template< class T, class... Args> std::shared_ptr<T> make_shared( Args&&... args );
Run Code Online (Sandbox Code Playgroud)
为什么这个函数不是static的函数shared_ptr<T>,如下所示:
template <class... Args> std::shared_ptr<T>::make(Args&&... args);
Run Code Online (Sandbox Code Playgroud)
这将使std::命名空间更加整洁,并且还允许这样的事情:
using shared_vector = std::shared_ptr<std::vector<int>>;
shared_vector a = shared_vector::make(7);
Run Code Online (Sandbox Code Playgroud)