Инициализировать std::array определенного типа, но любого размера? [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Гость
 Инициализировать std::array определенного типа, но любого размера? [дубликат]

Сообщение Гость »

Предположим, у меня есть следующий код:

Код: Выделить всё

using Element = std::array;

constexpr auto arrayOfElement()
{
return std::array
{
Element{ 1, 2 },
Element{ 2, 3 },
Element{ 123, 123 },
Element{ 8008, 1337 }
};
}
Это прекрасно компилируется, но для того, чтобы указать, что тип, который я имел в виду, является элементом возвращаемого массива, мне приходилось постоянно повторять имя типа Element. Написано по-другому:

Код: Выделить всё

constexpr auto arrayOfElement2()
{
return std::array
{
Element{ 1, 2 },
{ 2, 3 },
{ 123, 123 },
{ 8008, 1337 }
};
}
Здесь мне не нужно вводить Element столько раз, сколько имеется элементов, но в этом случае я не могу определить размер, и первый элемент должен быть типизировано, из-за чего все это выглядит несколько неуклюже из-за наличия краевого регистра для первого элемента.
Есть ли способ указать тип Element только один раз , но также определить размер массива (частичный CTAD)?

Подробнее здесь: https://stackoverflow.com/questions/781 ... t-any-size
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»