Можно ли заменить длинный явный список инициализаторов каким-либо шаблоном, который его генерирует?
std::array<Foo, n_foos> foos = {{
{0, bar},
{1, bar},
{2, bar},
{3, bar},
{4, bar},
{5, bar},
{6, bar},
{7, bar},
}};
Теперь вот этот код работает только потому, что у нас constexpr int n_foos = 8
. Как это можно сделать для произвольного и большого n_foos
?
n_foos
всегда равноconstexpr
, но вы просто не знаете, каким будет значение? - person Praetorian   schedule 14.08.2014std::array
, так как у него есть только неявные конструкторы (или, другими словами, нет конструктора, принимающегоstd::initializer_list
; конструктор в примере на самом деле является агрегатной инициализацией). Вот что я получил, используя трюк с индексами (работает дляstd::vector
и т. д., но не дляstd::array
): .stacked-crooked.com/a/0f9fe283af3b9b69 - person tclamb   schedule 14.08.2014