Спецификатор constexpr должен использоваться для значений, которые могут быть определены во время компиляции
Спецификатор constexpr должен использоваться для значений, которые могут быть определены во время компиляции.
Если значение переменных вычисляется из выражения, которое включает только константы времени компиляции, использование constexpr
перед определением переменной, как это:
constexpr double eValSquared = 2.718*2.718;
Если выражение не может быть вычислено во время компиляции, constexpr
ключевое слово гарантирует, что вы получите ошибку компиляции. Затем можно исправить базовую проблему, если это возможно.
Обратите внимание, что const
ключевое слово не гарантирует оценку во время компиляции. The const
ключевое слово просто запрещает прямое изменение значения переменных после инициализации. В зависимости от того, как переменная инициализируется, инициализация может произойти во время компиляции или во время запуска.
Шашка помечает определение локальной переменной без constexpr
спецификатор, если переменная инициализирована одним из следующих и не изменена впоследствии в коде:
Константа времени компиляции, для образца, буквальное значение.
Выражение, включающее только константы времени компиляции.
Вызовы функции с константами компиляции в качестве параметров при условии, что функция сама по себе constexpr
или функция содержит только оператор возврата, включающий ее параметры.
Вызов конструктора с константой компиляции при условии, что все представители функции класса, включая конструктор, сами по себе constexpr
.
Если вы ожидаете нарушения правил, но не видите его, обратитесь к разделу «Стандартные нарушения кодирования не отображаются».
Группа: Декларация |
Категория: Необходимый, Автоматизированный |