Warnung C26498
Die Funktion "function" ist constexpr, Variable 'variable' als constexpr markieren, wenn die Kompilierungszeitauswertung gewünscht ist (con.5)
Diese Regel hilft beim Erzwingen von Con.5 aus den C++-Core Guidelines: Verwenden Sie constexpr für Werte, die zur Kompilierungszeit berechnet werden können.
Hinweise
Die Warnung wird ausgelöst, indem das Ergebnis einer constexpr
-Funktion zu einer Nicht-constexpr
-Variablen zugewiesen wird, deren Wert sich nach der anfänglichen Zuordnung nicht ändert.
Name der Codeanalyse: USE_CONSTEXPR_FOR_FUNCTIONCALL
Beispiel
Dieser Beispielcode zeigt, wo C26498 angezeigt werden kann:
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;
}
Um die Probleme zu beheben, val1
und val2
constexpr
markieren:
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;
}