我只是想在 Xcode5.0.2 上使用 c++11 的 make_unique 函数,Clang 版本是
Apple LLVM 5.0 版(clang-500.2.79)(基于 LLVM 3.3svn)
检查后<memory>
它似乎不存在。make_shared 是。
我知道这是 C++14,但它也是为 C++14 验证的第一个函数。它甚至在视觉中:)。
什么时候可以使用?
注意:更多的是评论而不是答案,但格式化的代码和评论不会混合。
不幸的是,不知道什么时候可以使用;但是您现在可以轻松地自己定义它,稍后再切换到标准:
template <typename T, typename... Args>
auto make_unique(Args&&... args) -> std::unique_ptr<T>
{
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
}
就是这样,与make_shared
这里没有魔法相反,因为好处只是异常安全之一(将分配和捕获捆绑在一起unique_ptr
),而make_shared
捆绑了额外的优势(与 无关unique_ptr
)。
2014 年 3 月 10 日,带有基于 LLVM 3.4svn 的 Clang 的 Xcode 5.1,它具有完整的 C++14 支持。见https://clang.llvm.org/cxx_status.html