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