c++ std::make_unique和指定的初始化器

cld4siwp  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(174)

考虑以下结构:

struct MyStruct
{
  int my_number;
  std::string my_string;
};

是否可以使用Designated初始化器创建std::unique_ptr?像这样:

// like this
auto my_struct = std::make_unique<MyStruct>{.my_number = 4, .my_string = "two"};
// not like this
auto my_struct = std::make_unique<MyStruct>(4, "two");

我设法创建了一个新对象作为unique_ptr的参数,但发现它很丑:

auto my_struct = std::unique_ptr<MyStruct>(new MyStruct{.my_number = 4, .my_string = "two"});
siotufzp

siotufzp1#

是否可以使用Designated初始化器创建std::unique_ptr

,最好使用CTAD避免冗余:

auto my_struct = std::unique_ptr(new MyStruct{.my_number = 4, .my_string = "two"});

或者是

std::unique_ptr my_struct(new MyStruct{.my_number = 4, .my_string = "two"});

相关问题