Namespaces
Variants

std:: bad_variant_access

From cppreference.net
Utilities library
Défini dans l'en-tête <variant>
class bad_variant_access : public std:: exception
(depuis C++17)

std::bad_variant_access est le type de l'exception levée dans les situations suivantes :

(depuis C++26)

Toutes les fonctions membres de std::bad_variant_access sont constexpr : il est possible de créer et d'utiliser des objets std::bad_variant_access lors de l'évaluation d'une expression constante.

Cependant, les objets std::bad_variant_access ne peuvent généralement pas être constexpr , car toute allocation de mémoire dynamique doit être libérée lors de la même évaluation d'expression constante.

(depuis C++26)

Table des matières

Fonctions membres

(constructeur)
construit un nouvel objet bad_variant_access
(fonction membre publique)
operator=
remplace l'objet bad_variant_access
(fonction membre publique)
what
retourne la chaîne explicative
(fonction membre publique)

std::bad_variant_access:: bad_variant_access

bad_variant_access ( ) noexcept ;
(1) (depuis C++17)
(constexpr depuis C++26)
bad_variant_access ( const bad_variant_access & other ) noexcept ;
(2) (depuis C++17)
(constexpr depuis C++26)

Construit un nouvel objet bad_variant_access avec une chaîne d'octets terminée par un caractère nul définie par l'implémentation, accessible via what() .

1) Constructeur par défaut.
2) Constructeur de copie. Si * this et other ont tous deux le type dynamique std::bad_variant_access alors std:: strcmp ( what ( ) , other. what ( ) ) == 0 .

Paramètres

other - un autre objet d'exception à copier

std::bad_variant_access:: operator=

bad_variant_access & operator = ( const bad_variant_access & other ) noexcept ;
(depuis C++17)
(constexpr depuis C++26)

Assigne le contenu avec celui de other . Si * this et other ont tous deux le type dynamique std::bad_variant_access alors std:: strcmp ( what ( ) , other. what ( ) ) == 0 après l'assignation.

Paramètres

other - un autre objet d'exception à assigner

Valeur de retour

* this

std::bad_variant_access:: what

virtual const char * what ( ) const noexcept ;
(depuis C++17)
(constexpr depuis C++26)

Retourne la chaîne explicative.

Valeur de retour

Pointeur vers une chaîne implémentation-définie terminée par un caractère nul contenant des informations explicatives. La chaîne est adaptée à la conversion et à l'affichage en tant que std::wstring . Le pointeur est garanti valide au moins jusqu'à la destruction de l'objet exception duquel il est obtenu, ou jusqu'à l'appel d'une fonction membre non-const (par exemple l'opérateur d'affectation par copie) sur l'objet exception.

La chaîne retournée est encodée avec l'encodage littéral ordinaire durant l'évaluation constante.

(depuis C++26)

Notes

Les implémentations sont autorisées mais non requises à redéfinir what() .

Hérité de std:: exception

Fonctions membres

[virtuel]
détruit l'objet exception
(fonction membre publique virtuelle de std::exception )
[virtuel]
retourne une chaîne explicative
(fonction membre publique virtuelle de std::exception )

Notes

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_constexpr_exceptions 202502L (C++26) constexpr std::bad_variant_access

Exemple

#include <iostream>
#include <variant>
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';
    }
}

Sortie possible :

bad_variant_access

Voir aussi

lit la valeur du variant donné l'index ou le type (si le type est unique), lance une exception en cas d'erreur
(modèle de fonction)
(C++17)
appelle le foncteur fourni avec les arguments contenus dans un ou plusieurs variant s
(modèle de fonction)
(C++26)
appelle le foncteur fourni avec l'argument contenu dans le variant
(fonction membre publique)
exception indiquant un accès vérifié à un optional qui ne contient pas de valeur
(classe)
exception indiquant un accès vérifié à un expected qui contient une valeur inattendue
(modèle de classe)