"Expressões constantes" anteriores ao C ++ 11
oconstexpr
A palavra-chave foi introduzida no C ++ 11, pois (acho) era a ideia correspondente de "expressões constantes". No entanto, esse conceito estava implicitamente presente no C ++ 98 / c ++ 03, pois as declarações de matriz exigem uma expressão 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];
Existem outras "expressões constantes", isto é, expressões que podem ser (e / ou devem ser) avaliadas em tempo de compilação; Um exemplo são os argumentos do modelo.
Para o pré-C ++ 11, existe o seguinte, nos padrões C ++ 98/03 ou em outro local?
Uma lista completa de construções sintáticas que exigem expressões constantes (por exemplo, declarações de matriz e instanciações de modelo)As regras que governam essas expressões constantes (presumivelmente isso seria apenas um mapeamento dos itens na lista acima para suas definições no padrão)