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