Leggere in inglese

Condividi tramite


Avviso C26859

La 'variabile' facoltativa vuota viene annullata, genererà un'eccezione

Osservazioni:

L'annullamento del wrapping dei valori vuoti std::optional tramite il value metodo genererà un'eccezione. Tale operazione può causare un arresto anomalo quando l'eccezione non viene gestita. Questo controllo tenterà di trovare i casi in cui un std::optional oggetto è noto come vuoto e decomcritto usando il value metodo . È anche possibile abilitare C26829, C26830 e C26860 per un'analisi più rigorosa.

Esempio

void f(std::optional<int> maybeEmpty)
{
    std::optional<int> empty;
    std::optional<int> nonEmpty{5};
    nonEmpty.value() = 42; // No warning
    empty.value() = 42; // warning: C26859
    if (!maybeEmpty)
        maybeEmpty.value() = 42; // warning: C26859
}

Per risolvere questo problema, assicurarsi che il codice non riscriva mai un oggetto facoltativo vuoto.