std :: make_unique <T []>(大小)值初始化

wim*_*aan 7 c++ c++11 c++14

是否

std::make_unique<double[]>(1000)
Run Code Online (Sandbox Code Playgroud)

总是价值初始化元素?好吧,我调查了实现,clang并且g++正在使用

new T[size]()
Run Code Online (Sandbox Code Playgroud)

做值初始化.

但是我无法找到的C++17分之14一个一致的实现具有做到这一点.

ken*_*ytm 8

如果标准库符合C++ 14那么是的,它必须这样做(使用new T[size]).来自C++14§20.8.1.4[unique.ptr.create]/4:

template <class T> unique_ptr<T> make_unique(size_t n);

  • 返回:unique_ptr<T>(new remove_extent_t<T>[n]()).