constexpr
спецификатор может используемый по выражению для оценки времени компиляции
Этот дефект происходит, если вы не используете constexpr
спецификатор, когда переменная инициализируется при помощи выражения, которое может быть выполнено во время компиляции.
Дефектное средство проверки отмечает определение локальной переменной без constexpr
спецификатор, если переменная инициализируется одним из следующих и не изменяется впоследствии в коде:
Постоянное время компиляции, например, литеральное значение.
Выражение, включающее константы времени компиляции только.
Вызовы функции с константами времени компиляции как параметры, если функцией является самостоятельно constexpr
или функция содержит только оператор возврата, включающий его параметры.
Вызов конструктора с постоянным временем компиляции, обеспечил, всеми функциями членства класса включая конструктора является самостоятельно constexpr
.
Средство проверки не отмечает локальные, статические переменные.
Если значение переменных вычисляется из выражения, которое включает константы времени компиляции только, с помощью constexpr
перед определением переменной, как это:
constexpr double eValSquared = 2.718*2.718;
Если выражение не может быть выполнено во время компиляции, constexpr
ключевое слово гарантирует, что вы получаете ошибку компиляции. Можно затем устранить базовую проблему, если это возможно.
Обратите внимание на то, что const
ключевое слово не гарантирует оценку времени компиляции. const
ключевое слово просто запрещает прямую модификацию значения переменных после инициализации. В зависимости от того, как инициализируется переменная, инициализация может произойти во время компиляции или время выполнения.
Добавьте constexpr
спецификатор к определению переменной.
Повышения производительности могут варьироваться на основе компилятора, реализации библиотеки и среды, которую вы используете.
Группа: Производительность |
Язык: C++ |
Значение по умолчанию: Off |
Синтаксис командной строки:
MISSING_CONSTEXPR |
Удар: Средняя |