Warnung C26498

Die Funktion "function" ist constexpr, mark variable 'variable' constexpr, wenn die Kompilierungszeitauswertung gewünscht ist (con.5)

Diese Regel hilft beim Erzwingen von Con.5 aus den C++-Kernrichtlinien: Verwenden Sie constexpr für Werte, die zur Kompilierungszeit berechnet werden können.

Hinweise

Die Warnung wird ausgelöst, indem das Ergebnis einer Funktion einer constexpr Nichtvariablenconstexpr zugewiesen wird, deren Wert sich nach der anfänglichen Zuordnung nicht ändert.

Codeanalysename: 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, markieren val1 und val2constexpr:

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

Siehe auch

C26497
C26814
Con.5