Condividi tramite


Avviso C26860

Potenzialmente vuoto facoltativo 'variable' non sottoposto a wrapping, potrebbe generare 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 individuare i casi in cui non std::optional viene verificata la presenza di svuotamento prima di annullare il wrapping tramite il value metodo . È possibile abilitare C26829 e C26859 solo per un'analisi più permissiva.

Esempio

std::optional<int> getOptional();

void f(std::optional<int> maybeEmpty)
{
    if (maybeEmpty)
        maybeEmpty.value() = 42; // No warning
    maybeEmpty.value() = 5; // warning: C26860
    std::optional<int> o = getOptional();
    o.value() = 42; // warning: C26860
}

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