Freigeben über


Warnung C26859

Leere optionale 'Variable' wird entwrappt, löst Ausnahme aus.

Hinweise

Wenn Leere std::optional Werte über die value Methode entwrapping werden, wird eine Ausnahme ausgelöst. Dieser Vorgang kann zu einem Absturz führen, wenn die Ausnahme nicht behandelt wird. Bei dieser Überprüfung wird versucht, Fälle zu finden, in denen bekannt ist, dass ein std::optional Leerer ist und mit der value Methode entwappt wird. Sie können C26829, C26830 und C26860 auch für eine strengere Analyse aktivieren.

Beispiel

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
}

Um dieses Problem zu lösen, stellen Sie sicher, dass der Code niemals ein leeres optionales Auslöser entpackt.