Namespaces
Variants

std::bad_variant_access

Von de.cppreference.net
 
 
Dienstprogrammbibliothek
Sprachunterstützung
Typunterstützung (Basistypen, RTTI)
Bibliotheks-Feature-Test-Makros (C++20)
Programmdienstprogramme
Variadische Funktionen
Koroutinen-Unterstützung (C++20)
Vertragsunterstützung (C++26)
Drei-Wege-Vergleich
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Allgemeine Dienstprogramme
Relationale Operatoren (veraltet in C++20)
Ganzzahlvergleichsfunktionen
(C++20)(C++20)(C++20)    
(C++20)
Swap und Typoperationen
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
Allgemeine Vokabular-Typen
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)



 
 
Definiert in Header <variant>
class bad_variant_access : public std::exception
(seit C++17)

std::bad_variant_access ist der Typ der Ausnahme, die in den folgenden Situationen ausgelöst wird:

(seit C++26)

Memberfunktionen

(Konstruktor)
konstruiert ein neues bad_variant_access Objekt
(öffentliche Elementfunktion)
operator=
ersetzt das bad_variant_access Objekt
(öffentliche Elementfunktion)
what
gibt die erklärende Zeichenkette zurück
(öffentliche Elementfunktion)

std::bad_variant_access:: bad_variant_access

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

Konstruiert ein neues bad_variant_access -Objekt mit einer implementierungsdefinierten nullterminierten Byte-Zeichenkette, die über what() zugänglich ist.

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

Parameter

other - ein weiteres Ausnahmeobjekt zum Kopieren

std::bad_variant_access:: operator=

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

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

Parameter

other - ein weiteres Ausnahmeobjekt, mit dem zugewiesen wird

Rückgabewert

* this

std::bad_variant_access:: what

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

Gibt den erklärenden String zurück.

Rückgabewert

Zeiger auf einen implementierungsdefinierten nullterminierten String mit erklärenden 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. der Kopierzuweisungsoperator) auf dem Ausnahmeobjekt aufgerufen wird.

Der zurückgegebene String ist während der Konstantenauswertung mit der gewöhnlichen Literalkodierung kodiert.

(seit C++26)

Anmerkungen

Implementierungen dürfen, müssen aber nicht what() überschreiben.

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 <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';
    }
}

Mögliche Ausgabe:

bad_variant_access

Siehe auch

Liest den Wert der Variante anhand des Index oder des Typs (falls der Typ eindeutig ist), wirft bei Fehler eine Exception
(Funktions-Template)
(C++17)
Ruft den bereitgestellten Funktor mit den Argumenten auf, die von einem oder mehreren variant s gehalten werden
(Funktions-Template)
(C++26)
Ruft den bereitgestellten Funktor mit dem Argument auf, das von der variant gehalten wird
(Öffentliche Member-Funktion)
Exception, die einen geprüften Zugriff auf einen optional-Wert anzeigt, der keinen Wert enthält
(Klasse)
Exception, die einen geprüften Zugriff auf einen expected anzeigt, der einen unerwarteten Wert enthält
(Klassen-Template)