Постоянные выражения C++
В C++ требуются константные выражения, то есть выражения, результатом вычисления которых является константа, для объявления следующих элементов.
Границы массива.
Селекторы в операторах case.
Спецификация длины битового поля.
Инициализаторы перечисления.
Ниже перечислены единственные допустимые операнды в константных выражениях.
Литералы
Константы перечисления.
Значения, объявленные как константы, которые инициализированы с константными выражениями.
Выражения sizeof.
Нецелочисленные константы должны преобразовываться (явно или неявно) в целочисленные типы, чтобы быть допустимыми в константном выражении. Поэтому следующий код допустим.
const double Size = 11.0;
char chArray[(int)Size];
Явные преобразования в целочисленные типы допустимы в константных выражениях; все другие типы и производные типы недопустимы, за исключением случаев использования в качестве операндов оператора sizeof.
Запятую-оператор и операторы присваивания невозможно использовать в константных выражениях.