Warum kann ich eine Nicht-Constexpr-Funktion innerhalb einer Constexpr-Funktion aufrufen?
Betrachten Sie den folgenden Code:
#include <stdio.h>
constexpr int f()
{
return printf("a side effect!\n");
}
int main()
{
char a[f()];
printf("%zd\n", sizeof a);
}
Ich hätte erwartet, dass der Compiler sich über den Aufruf von beschwertprintf
Innerhalbf
, daf
sollte seinconstexpr
, aberprintf
ist nicht. Warum macht das Programmkompilieren und drucken 15?