The constexpr specifier shall be used for values that can be determined at compile time
The constexpr specifier shall be used for values that can be determined at compile time.
If a variable value is computed from an expression that involves compile-time constants
only, using constexpr before the variable definition, like
this:
constexpr double eValSquared = 2.718*2.718;
If the expression cannot be evaluated at compile time, the constexpr
keyword ensures that you get a compilation error. You can then fix the underlying issue if
possible.
Note that the const keyword does not guarantee compile-time
evaluation. The const keyword simply forbids direct modification of the
variable value after initialization. Depending on how the variable is initialized, the
initialization can happen at compile time or run time.
The checker flags a local variable definition without the constexpr
specifier if the variable is initialized with one of the following and not modified
subsequently in the code:
A compile-time constant, for instance, a literal value.
An expression involving compile-time constants only.
Calls to a function with compile-time constants as parameters, provided the
function is itself constexpr or the function contains only a return
statement involving its parameters.
A constructor call with a compile-time constant, provided all member functions of
the class including the constructor are themselves
constexpr.
If you expect a rule violation but do not see it, refer to Coding Standard Violations Not Displayed.
| Group: Declaration |
| Category: Required, Automated |