Espacios de nombres
Variantes
Acciones

std::bad_variant_access

De cppreference.com
< cpp‎ | utility‎ | variant
 
 
Biblioteca de servicios
 
 
Definido en el archivo de encabezado <variant>
class bad_variant_access : public std::exception
(desde C++17)

std::bad_variant_access es el tipo de la excepción lanzada en las siguientes situaciones:

Contenido

[editar] Funciones miembro

(constructor)
Construye un nuevo objeto bad_variant_access.
(función miembro pública)
operator=
Reemplaza el objeto bad_variant_access.
(función miembro pública)
what
Devuelve la cadena aclaratoria.
(función miembro pública)

std::bad_variant_access::bad_variant_access

bad_variant_access() noexcept;
(1) (desde C++17)
bad_variant_access( const bad_variant_access& other ) noexcept;
(2) (desde C++17)

Construye un nuevo objeto bad_variant_access con una cadena de bytes terminada en nulo definida por la implementación, que es accesible a través de what().

1) Constructor por defecto.
2) Constructor de copia. Si tanto *this como other tienen un tipo dinámico std::bad_variant_access, entonces std::strcmp(what(), other.what()) == 0.

Parámetros

other - El otro objeto de excepción del que copiar.

std::bad_variant_access::operator=

bad_variant_access& operator=( const bad_variant_access& other ) noexcept;
(desde C++17)

Asigna el contenido con el de other. Si tanto *this como other tienen el tipo dinámico std::bad_variant_access, entonces std::strcmp(what(), other.what()) == 0 después de la asignación.

Parámetros

other - Otro objeto excepción con el cual asignar.

Valor de retorno

*this

std::bad_variant_access::what

virtual const char* what() const noexcept;
(desde C++17)

Devuelve la cadena aclaratoria.

Parámetros

(Ninguno)

Valor de retorno

Un puntero a una cadena terminada en nulo con información aclaratoria. La cadena es adecuada para convertirse y mostrarse como un std::wstring. Se garantiza que el puntero sea válido al menos hasta que el objeto excepción del cual se obtuvo se destruya, o hasta que una función miembro no const (p. ej., el operador de asignación de copia) se llame en el objeto excepción.

Notas

Se permite, pero no se requiere, que las implementaciones redefinan a what().

Heredado de std::exception

Funciones miembro

[virtual]
Destruye el objeto excepción.
(función miembro virtual pública de std::exception) [editar]
[virtual]
Devuelve una cadena aclaratoria.
(función miembro virtual pública de std::exception) [editar]

[editar] Ejemplo

#include <variant>
#include <iostream>
 
int main()
{
    std::variant<int, float> v;
    v = 12;
    try {
      std::get<float>(v);
    }
    catch(const std::bad_variant_access& e) {
        std::cout << e.what() << '\n';
    }
}

Posible salida:

bad_variant_access

[editar] Véase también

Lee el valor del variante dado el subíndice o el tipo (si el tipo es único), lanza una excepción si existe un error.
(plantilla de función) [editar]
(C++17)
Llama al objeto función proporcionado con los argumentos mantenidos por uno o más variantes.
(plantilla de función) [editar]