Advertencia C26498
La función 'function' es constexpr, mark variable "variable" constexpr si se desea la evaluación en tiempo de compilación (con.5)
Esta regla ayuda a aplicar Con.5 de C++ Core Guidelines: use constexpr para los valores que se puedan calcular en tiempo de compilación.
Comentarios
La advertencia se desencadena asignando el resultado de una función constexpr
a cualquier variable que no sea constexpr
cuyo valor no cambie después de la asignación inicial.
Nombre de análisis de código: USE_CONSTEXPR_FOR_FUNCTIONCALL
Ejemplo
Este código de ejemplo muestra dónde puede aparecer C26498:
constexpr int getMyValue()
{
return 1;
}
void foo()
{
constexpr int val0 = getMyValue(); // no C26498
const int val1 = getMyValue(); // C26498, C26814
int val2 = getMyValue(); // C26498, value is never modified
int val3 = getMyValue(); // no C26498, val3 is assigned to below.
val3 = val3 * val2;
}
Para corregir los problemas, marque val1
y val2
constexpr
:
constexpr int getMyValue()
{
return 1;
}
void foo()
{
constexpr int val0 = getMyValue(); // OK
constexpr int val1 = getMyValue(); // OK
constexpr int val2 = getMyValue(); // OK
int val3 = getMyValue(); // OK
val3 = val3 * val2;
}