Avviso C26859
La 'variabile' facoltativa vuota viene annullata, genererà un'eccezione
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.
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.