std::bad_any_cast
| Definiert in der Header-Datei <any> |
||
| class bad_any_cast : public std::bad_cast; |
(seit C++17) | |
Definiert einen Objekttyp, der von den werte-zurückgebenden Formen von std::any_cast bei einem Fehler ausgelöst wird.
Inhalt |
[bearbeiten] Member functions
| (Konstruktor) |
konstruiert ein neues bad_any_cast Objekt(öffentliche Memberfunktion) |
| operator= |
ersetzt das bad_any_cast Objekt(öffentliche Memberfunktion) |
| what |
gibt den erklärenden String zurück (öffentliche Memberfunktion) |
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 einer implementierungsdefinierten, nullterminierten Byte-Zeichenkette, die über what() zugänglich ist.
std::bad_any_cast haben, dann gilt std::strcmp(what(), other.what()) == 0.Parameter
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Kopieren |
std::bad_any_cast::operator=
| bad_any_cast& operator=( const bad_any_cast& other ) noexcept; |
(seit C++17) | |
Weist den Inhalt 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
| Sonstiges | - | ein anderes Ausnahmeobjekt zum Zuweisen |
Rückgabewert
*this
std::bad_any_cast::what
virtual const char* what() const noexcept; |
(seit C++17) | |
Gibt den erklärenden String zurück.
Rückgabewert
Zeiger auf einen implementierungsdefinierten, nullterminierten String mit erläuternden Informationen. Der String kann für die Konvertierung und Anzeige als std::wstring verwendet werden. Der Zeiger ist garantiert gültig, mindestens bis das Ausnahmeobjekt, von dem er stammt, zerstört wird, oder bis eine nicht-const Memberfunktion (z. B. der Kopierzuweisungsoperator) für das Ausnahmeobjekt aufgerufen wird.
|
Der zurückgegebene String ist während der konstanten Auswertung mit der gewöhnlichen Literal-Codierung kodiert. |
(seit C++26) |
Anmerkungen
Implementierungen dürfen what() überschreiben, sind aber nicht dazu verpflichtet.
Geerbt von std::bad_cast
Abgeleitet von std::exception
Memberfunktionen
| [virtuell] |
zerstört das Ausnahmeobjekt (virtuelle öffentliche Memberfunktion von std::exception) |
| [virtuell] |
gibt einen erklärenden String zurück (virtuelle öffentliche Memberfunktion von std::exception) |
[bearbeiten] 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); // throws } catch (const std::bad_any_cast& ex) { std::println("{}", ex.what()); } }
Mögliche Ausgabe
bad any_cast