Condividi tramite


Avviso C26498

La funzione 'function' è constexpr, contrassegnare la variabile 'variable' constexpr se si desidera eseguire la valutazione in fase di compilazione (con.5)

Questa regola consente di applicare Con.5 dalle linee guida di base di C++: usare constexpr per i valori che possono essere calcolati in fase di compilazione.

Osservazioni:

L'avviso viene attivato assegnando il risultato di una constexpr funzione a qualsiasi variabile non-constexpr il cui valore non cambia dopo l'assegnazione iniziale.

Nome dell'analisi del codice: USE_CONSTEXPR_FOR_FUNCTIONCALL

Esempio

Questo codice di esempio mostra dove può essere visualizzato 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;
}

Per risolvere i problemi, contrassegnare val1 e 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;
}

Vedi anche

C26497
C26814
Con.5