Namespaces
Variants

std:: bad_variant_access

From cppreference.net
Utilities library
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)

Alle Memberfunktionen von std::bad_variant_access sind constexpr : Es ist möglich, std::bad_variant_access -Objekte in der Auswertung eines konstanten Ausdrucks zu erstellen und zu verwenden.

Allerdings können std::bad_variant_access -Objekte im Allgemeinen nicht constexpr sein, da jeder dynamisch allokierte Speicher in derselben Auswertung des konstanten Ausdrucks freigegeben werden muss.

(since C++26)

Inhaltsverzeichnis

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 )

Hinweise

Feature-Test Makro Wert Std Feature
__cpp_lib_constexpr_exceptions 202502L (C++26) constexpr std::bad_variant_access

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)