«Постоянные выражения» до C ++ 11
constexpr
Ключевое слово было введено в C ++ 11, так как (я думаю) была соответствующая идея «константных выражений». Тем не менее, эта концепция неявно присутствовала в C ++ 98 / c ++ 03, поскольку объявления массивов требуют постоянного выражения:
// 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];
Существуют другие «константные выражения», то есть выражения, которые могут (и / или должны) оцениваться во время компиляции; Одним из примеров являются аргументы шаблона.
Для pre-C ++ 11, существует ли следующее, в стандартах C ++ 98/03 или где-либо еще?
Полный список синтаксических конструкций, требующих константных выражений (например, объявления массивов и создания экземпляров шаблонов)Правила, регулирующие такие константные выражения (предположительно, это будет просто сопоставление элементов в приведенном выше списке с их определениями в стандарте)