У меня есть массив с именем foos
с экземплярами Foo
. Они хранятся в std.array, и я хотел бы инициализировать их во время компиляции. Возможно ли это с помощью C++17
и constexpr?
struct Foo
{
constexpr void setA(int a);
int _a{0};
};
static std::array<Foo, 100> foos;
static constexpr void initialize()
{
int i = 0;
for (auto& e : foos)
{
e.setA(i++);
}
}
Кажется, инициализация все еще выполняется во время выполнения. Я что-то упустил?
https://gcc.godbolt.org/z/r4WUbE
Я знаю, что -O3
будет генерировать лучший вывод, но мой оригинальный пример немного лучше, и компилятор не оптимизирует его при этой оптимизации.