cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

инициализация массивов для std::unique_ptr<... []> #368

Open apolukhin opened 3 years ago

apolukhin commented 3 years ago

Перенос предложения: голоса +5, -1 Автор идеи: Boris Vinogradov

В C++ сущетвует конструкция для инициализации динамических массивов:

int *y = new int[3]{1, 2, 3};

В тоже время для создания массива объектов подобной конструкции нет.

Предлагаю добавить инициалзиацию для массивов которые управляются std::unique_ptr:

std::unique_ptr x = make_unique<int []>({1, 2, 3});

Также сделать дополнение конструктора unique_ptr для инциализации элементов подобным образом с помощью deduction guides.

apolukhin commented 3 years ago

yndx-antoshkka, 19 октября 2018, 14:06 Мысль занятная. Рекомендую начать с написания прототипа и добавлением его в Boost: https://github.com/boostorg/smart_ptr/blob/develop/include/boost/smart_ptr/make_unique.hpp

Там уже есть полезные дополнительные функции, которых нет в стандарте.