Namespaces
Variants

std:: bad_any_cast

From cppreference.net
Utilities library
Definiert in Header <any>
class bad_any_cast : public std:: bad_cast
(seit C++17)

Definiert einen Typ von Objekt, der von den wertrückgebenden Formen von std::any_cast bei Fehlschlag geworfen wird.

Inhaltsverzeichnis

Memberfunktionen

(Konstruktor)
konstruiert ein neues bad_any_cast Objekt
(öffentliche Elementfunktion)
operator=
ersetzt das bad_any_cast Objekt
(öffentliche Elementfunktion)
what
gibt die erläuternde Zeichenkette zurück
(öffentliche Elementfunktion)

std::bad_any_cast:: bad_any_cast

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

Konstruiert ein neues bad_any_cast -Objekt mit einem implementierungsdefinierten nullterminierten Byte-String, der über what() zugänglich ist.

1) Standardkonstruktor.
2) Kopierkonstruktor. Wenn * this und other beide den dynamischen Typ std::bad_any_cast haben, dann gilt std:: strcmp ( what ( ) , other. what ( ) ) == 0 .

Parameter

other - ein weiteres Ausnahmeobjekt zum Kopieren

std::bad_any_cast:: operator=

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

Weist die Inhalte mit denen von other zu. Wenn * this und other beide den dynamischen Typ std::bad_any_cast haben, dann gilt std:: strcmp ( what ( ) , other. what ( ) ) == 0 nach der Zuweisung.

Parameter

other - ein weiteres Ausnahmeobjekt, mit dem zugewiesen werden soll

Rückgabewert

* this

std::bad_any_cast:: what

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

Gibt den erläuternden String zurück.

Rückgabewert

Zeiger auf einen implementierungsdefinierten nullterminierten String mit erläuternden Informationen. Der String ist geeignet für Konvertierung und Anzeige als std::wstring . Der Zeiger ist garantiert mindestens so lange gültig, bis das Ausnahmeobjekt, von dem er erhalten wurde, zerstört wird, oder bis eine nicht-konstante Memberfunktion (z.B. Kopierzuweisungsoperator) auf dem Ausnahmeobjekt aufgerufen wird.

Anmerkungen

Implementierungen dürfen, sind aber nicht verpflichtet, what() zu überschreiben.

Geerbt von std:: bad_cast

Geerbt von std:: exception

Elementfunktionen

[virtual]
zerstört das Exception-Objekt
(virtuelle öffentliche Elementfunktion von std::exception )
[virtual]
gibt einen erklärenden String zurück
(virtuelle öffentliche Elementfunktion von std::exception )

Beispiel

#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); // wirft Exception
    }
    catch (const std::bad_any_cast& ex)
    {
        std::println("{}", ex.what());
    }
}

Mögliche Ausgabe:

bad any_cast