Инициализация при компиляции в C++
Инициализация при компиляции
задается маркером constinit для
объекта статического времени жизни: начальное
значение вычисляют при сборке, но сам объект
не обязан быть неизменяемым.
Такую переменную можно менять позже в
программе, в отличие от const.
Запишем constexpr функцию и статическое
целое с constinit:
#include <iostream>
constexpr int scale(int x) {
return x * 10;
}
constinit int seed = scale(4);
int main() {
std::cout << seed << "\n";
seed = 99;
std::cout << seed << "\n";
return 0;
}
Объявите constexpr int offset,
прибавляющую 100 к аргументу.
Задайте constinit int base
результатом для 5. Выведите
base, затем запишите в нее
0 и выведите снова.