std::variant<Types...>::~variant
Von de.cppreference.net
~variant();
|
(seit C++17) (constexpr seit C++20) |
|
Wenn valueless_by_exception() gleich true ist, tut es nichts. Andernfalls zerstört es das aktuell enthaltene Objekt.
Dieser Destruktor ist trivial, wenn std::is_trivially_destructible_v<T_i> für alle true in T_i gleich Types... ist.
Hinweise
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_variant
|
202106L
|
(C++20)
(DR) |
Vollständig
constexpr
std::variant
|
Beispiel
Diesen Code ausführen
#include <cstdio> #include <variant> int main() { struct X { ~X() { puts("X::~X();"); } }; struct Y { ~Y() { puts("Y::~Y();"); } }; { puts("entering block #1"); std::variant<X,Y> var; puts("leaving block #1"); } { puts("entering block #2"); std::variant<X,Y> var{ std::in_place_index_t<1>{} }; // constructs var(Y) puts("leaving block #2"); } }
Ausgabe:
entering block #1 leaving block #1 X::~X(); entering block #2 leaving block #2 Y::~Y();
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| P2231R1 | C++20 | der Destruktor war nicht constexpr während nicht-triviale Destruktoren in C++20 constexpr sein können | als constexpr festgelegt |