【发布时间】:2013-11-28 13:30:26
【问题描述】:
我只是想在 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 验证的第一个函数。 它甚至在视觉中:)。
什么时候上市?
【问题讨论】:
我只是想在 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 验证的第一个函数。 它甚至在视觉中:)。
什么时候上市?
【问题讨论】:
March 10, 2014 与 Xcode 5.1 和基于 LLVM 3.4svn 的 Clang 完全支持 C++14。见https://clang.llvm.org/cxx_status.html
【讨论】:
注意:更多的是评论而不是答案,但格式化代码和 cmets 不能混用。
很遗憾,不知道什么时候可以使用;但是您现在可以轻松地自己定义它,稍后再切换到标准:
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无关)。
【讨论】: