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