“Konstante Ausdrücke” vor C ++ 11
Dasconstexpr
keyword wurde in C ++ 11 eingeführt, da (glaube ich) die entsprechende Idee von "konstanten Ausdrücken" war. Dieses Konzept war jedoch in C ++ 98 / c ++ 03 implizit vorhanden, da für Array-Deklarationen ein konstanter Ausdruck erforderlich ist:
// valid:
int a[sizeof(int)];
int b[3+7];
int c[13/4];
const int n = 3;
int d[n];
// invalid:
int m = 4;
int e[m];
Es gibt andere "konstante Ausdrücke", d. H. Ausdrücke, die zur Kompilierungszeit ausgewertet werden können (und / oder müssen); Ein Beispiel sind Template-Argumente.
Existieren für C ++ 11-Vorgängerversionen die folgenden Elemente, entweder in den C ++ 98/03-Standards oder anderswo?
Eine vollständige Liste syntaktischer Konstrukte, die konstante Ausdrücke erfordern (z. B. Array-Deklarationen und Template-Instantiierungen) Die Regeln für solche konstanten Ausdrücke (vermutlich wäre dies nur eine Zuordnung von den Elementen in der obigen Liste zu ihren Definitionen in der Norm)