【发布时间】:2018-02-07 12:49:26
【问题描述】:
即标准库的所有实现(在 MSVC、clang、gcc 中)都使用以下代码(为了便于阅读而进行了简化):
template<class T, class... Args>
inline unique_ptr<T> make_unique(Args&&... args)
{
return unique_ptr<T>(new T(std::forward<Args>(args)...));
}
但是为什么不用花括号呢?即:
template<class T, class... Args>
inline unique_ptr<T> make_unique(Args&&... args)
{
return unique_ptr<T>(new T{std::forward<Args>(args)...});
// ^ here and ^ here
}
(make_shared 的问题相同。)
【问题讨论】:
标签: c++ shared-ptr smart-pointers unique-ptr