Compartir a través de


Advertencia C26859

La 'variable' opcional vacía se desencapsula, producirá una excepción.

Comentarios

La desencapsulación de valores vacíos std::optional a través del value método producirá una excepción. Esta operación puede provocar un bloqueo cuando no se controla la excepción. Esta comprobación intentará buscar casos en los que se sabe que un elemento std::optional está vacío y desencapsulado mediante el value método . También puede habilitar C26829, C26830 y C26860 para un análisis más estricto.

Ejemplo

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
}

Para solucionar este problema, asegúrese de que el código nunca desajusta un opcional vacío.