Freigeben über


Warnung C26860

Potenziell leere optionale 'Variable' wird entwrappt, kann Eine Ausnahme auslösen

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. Diese Überprüfung versucht, Fälle zu finden, in denen eine std::optional nicht auf Leerheit überprüft wird, bevor sie über die value Methode entpackt wird. Sie können C26829 und C26859 nur für eine eingeschränktere Analyse aktivieren.

Beispiel

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
}

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