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