你如何用这些初始化来制作 unique_ptrs ?

How do you make unique_ptrs with the these initializations?

通过以下初始化使用 std::make_unique 制作 std::unique_ptr 的等效版本是什么?

// Single object
// 1: Indeterminate value
new int; 
// 2: Zero initialized
new int();
// 3: Initialized with 7
new int(7);

    
// Arrays
// 1: Indeterminate values
new int[10];
// 2: All zero-initialized
new int[10]();
// 3: Initialized with list, (rest all zero)
new int[10]{ 7, 6, 5, 4 };

计数器部分是:

// Single object
// 1: Indeterminate value
new int;
std::make_unique_for_overwrite<int>(); // since C++20

// 2: Zero initialized
new int();
std::make_unique<int>();

// 3: Initialized with 7
new int(7);
std::make_unique<int>(7);
// Arrays
// 1: Indeterminate values
new int[10];
std::make_unique_for_overwrite<int[]>(10); // Since C++20
// 2: All zero-initialized
new int[10]();
std::make_unique<int[]>(10);
// 3: Initialized with list, (rest all zero).
new int[10]{ 7, 6, 5, 4 };
std::unique_ptr<int[]>{ new int[10]{ 7, 6, 5, 4 } };

std::make_unique_for_overwrite 仅适用于 C++20。