Freigeben über


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 val2constexpr 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;
}

Weitere Informationen

C26497
C26814
Con.5