Namespaces
Variants

std:: bad_any_cast

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

Définit un type d'objet à lever par les formes à retour de valeur de std::any_cast en cas d'échec.

Table des matières

Fonctions membres

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

std::bad_any_cast:: bad_any_cast

bad_any_cast ( ) noexcept ;
(1) (depuis C++17)
bad_any_cast ( const bad_any_cast & other ) noexcept ;
(2) (depuis C++17)

Construit un nouvel objet bad_any_cast 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_any_cast , alors std:: strcmp ( what ( ) , other. what ( ) ) == 0 .

Paramètres

other - un autre objet exception à copier

std::bad_any_cast:: operator=

bad_any_cast & operator = ( const bad_any_cast & other ) noexcept ;
(depuis C++17)

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

Paramètres

other - autre objet d'exception à assigner

Valeur de retour

* this

std::bad_any_cast:: what

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

Retourne la chaîne explicative.

Valeur de retour

Pointeur vers une chaîne implémentée-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 d'être 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.

Notes

Les implémentations sont autorisées mais non obligées de redéfinir what() .

Hérité de std:: bad_cast

Hérité de std:: exception

Fonctions membres

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

Exemple

#include <any>
#include <cassert>
#include <print>
int main()
{
    auto x = std::any(42);
    assert(std::any_cast<int>(x) == 42); // OK
    try
    {
        [[maybe_unused]] auto s = std::any_cast<std::string>(x); // lève une exception
    }
    catch (const std::bad_any_cast& ex)
    {
        std::println("{}", ex.what());
    }
}

Sortie possible :

bad any_cast