If the number of initializer clauses is less than the number of members and bases (since C++17) or initializer list is completely empty, the remaining members and bases (since C++17) are initialized by their default initializers, if provided in the class definition, and otherwise (since C++14) by empty lists, in accordance with the usual list-initialization rules (which performs value-initialization for non-class types and non-aggregate classes with default constructors, and aggregate initialization for aggregates). If a member of a reference type is one of these remaining members, the program is ill-formed.
Emphasis added by me :+)
One can use this to partially initialise with some values, the rest are zero:
std::array<int, 4> did_arr {1,2}; // same as {1,2,0,0}
Good Luck !!
Edit:
Seen as though you want to generate some numbers, there is std::generate