"Expresiones constantes" anteriores a C ++ 11
losconstexpr
La palabra clave se introdujo en C ++ 11, ya que (creo) era la idea correspondiente de "expresiones constantes". Sin embargo, este concepto estaba implícitamente presente en C ++ 98 / c ++ 03, ya que las declaraciones de matriz requieren una expresión constante:
// 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];
Hay otras "expresiones constantes", es decir, expresiones que pueden ser (y / o deben ser) evaluadas en tiempo de compilación; Un ejemplo son los argumentos de plantilla.
Para pre-C ++ 11, ¿existe lo siguiente, ya sea en los estándares C ++ 98/03 o en otro lugar?
Una lista completa de construcciones sintácticas que requieren expresiones constantes (por ejemplo, declaraciones de matriz e instancias de plantilla)Las reglas que rigen tales expresiones constantes (presumiblemente, esto sería solo una asignación de los elementos de la lista anterior a sus definiciones en el estándar)