diff --git a/template.cc b/template.cc index 9bb2710..cbb2df8 100644 --- a/template.cc +++ b/template.cc @@ -444,13 +444,17 @@ template vector> enumerate(const vector& container) return zip(ArithmeticIterator(0), ArithmeticIterator(INT_MAX), container.begin(), container.end()); } #define initarray(init, N) (__initarray::type, (N)>(init)) -template -array __initarray(const T& init) { - array res; - for (size_t i = 0; i < N; ++i) { - res[i] = init; +namespace detail { + template + constexpr std::array + make_array(const T& value, std::index_sequence) { + return {{(static_cast(Is), value)...}}; } - return res; +} + +template +constexpr std::array __initarray(const T& value) { + return detail::make_array(value, std::make_index_sequence()); } /*******************************************************/