Рассмотрим следующий код:
#include <stdio.h>
constexpr int f()
{
return printf("a side effect!\n");
}
int main()
{
char a[f()];
printf("%zd\n", sizeof a);
}
Я ожидал, что компилятор будет жаловаться на вызов printf внутри f, потому что f должен быть constexpr, но printf - нет. Почему программа компилирует и печатает 15?