Я пытаюсь присвоить переменным sizeof значений некоторого типа данных во время компиляции.
Я попробовал следующий код:
constexpr int foo_implementation () {
return sizeof(int);
}
#define foo std::integral_constant<int, foo_implementation()>::value
int main() {
int size;
for(int i=0;i<10;i++) {
size = foo;
std::cout<<size<<std::endl;
}
return 0;
}
Когда я сбрасываю вывод препроцессора, он простозамените foo полным оператором, что ожидается.
Мой вопрос: размер жесткого кода компилятора будет равен 4 (при условии, что размер int равен 4), или он будет снова и снова вызывать оператор sizeof.
Еслинет, как я могу исправить значение размера во время компиляции на размер int, который известен во время компиляции, чтобы сохранить выполнение дополнительных инструкций во время выполнения?