Нет способа сделать это красиво в C ++ 14. Тип массива фиксируется в его объявлении и остается неизменным независимо от количества элементов, фактически инициализированных ненулевыми значениями.
В C ++ 17 вы просто сделали бы
std::array arr{1, 2, 3, 4};
Но в C ++ 14 вам придется использовать auto
переменную и make_array
тип функции. Если хотите, я могу показать пример кода.
P.S. Фактически, отсутствие автоматического вычитания длины массива с std::array
было единственной причиной, по которой я использовал массивы в стиле C в некоторых моих кодах.