Вопрос: как создать массив constexpr размером 1024
со всеми элементами, установленными на 0
, кроме элемента 42
, который должен быть 11
?
#include <array>
constexpr auto make_my_array() -> std::array<int, 1024>
{
std::array<int, 1024> a{};
a[42] = 11; // std::array::operator[] is constexpr non-const method since C++17
return a;
}
auto test()
{
constexpr std::array<int, 1024> a = make_my_array();
}
Или еще лучшее предложение от @ michael-anderson a make_iota_array
:
template <std::size_t N>
constexpr auto make_iota_array() -> std::array<int, N>
{
std::array<int, N> a{};
for (std::size_t i = 0; i < N; ++i)
a[i] = i;
return a;
}