Namensräume
Varianten
Aktionen

std::chrono::ambiguous_local_time

Von cppreference.com
< cpp‎ | chrono
 
 
 
Definiert in Header <chrono>
class ambiguous_local_time;
(seit C++20)

Definiert einen Objekttyp, der als Ausnahme ausgelöst wird, um zu melden, dass versucht wurde, eine mehrdeutige std::chrono::local_time in eine std::chrono::sys_time zu konvertieren, ohne eine std::chrono::choose (wie z.B. choose::earliest oder choose::latest) anzugeben.

Diese Ausnahme wird von std::chrono::time_zone::to_sys und Funktionen, die sie aufrufen (wie die Konstruktoren von std::chrono::zoned_time, die eine std::chrono::local_time entgegennehmen), ausgelöst.

cpp/error/exceptioncpp/error/runtime errorstd-chrono-ambiguous local time-inheritance.svg

Vererbungdiagramm

Inhalt

[bearbeiten] Member-Funktionen

(Konstruktor)
konstruiert das Ausnahmeobjekt
(öffentliche Memberfunktion)
operator=
ersetzt das Ausnahmeobjekt
(öffentliche Memberfunktion)
what
gibt den erklärenden String zurück
(öffentliche Memberfunktion)

std::chrono::ambiguous_local_time::ambiguous_local_time

template< class Duration >

ambiguous_local_time( const std::chrono::local_time<Duration>& tp,

                      const std::chrono::local_info& i );
(1) (seit C++20)
ambiguous_local_time( const ambiguous_local_time& other ) noexcept;
(2) (seit C++20)

Konstruiert das Ausnahmeobjekt.

1) Der von what() zurückgegebene erklärende String ist äquivalent zu dem, der von os.str() nach dem folgenden Code erzeugt wird
std::ostringstream os;
os << tp << " is ambiguous.  It could be\n"
   << tp << ' ' << i.first.abbrev << " == "
   << tp - i.first.offset << " UTC or\n"
   << tp << ' ' << i.second.abbrev  << " == "
   << tp - i.second.offset  << " UTC";
Das Verhalten ist undefiniert, wenn i.result != std::chrono::local_info::ambiguous.
2) Kopierkonstruktor. Wenn *this und other beide den dynamischen Typ std::chrono::ambiguous_local_time haben, dann ist std::strcmp(what(), other.what()) == 0.

Parameter

tp - der Zeitpunkt, für den die Konvertierung versucht wurde
i - ein std::chrono::local_info, das das Ergebnis des Konvertierungsversuchs beschreibt
Sonstiges - ein anderer ambiguous_local_time zum Kopieren

Ausnahmen

Kann std::bad_alloc auslösen

Anmerkungen

Da das Kopieren einer Standardbibliotheksklasse, die von std::exception abgeleitet ist, keine Ausnahmen auslösen darf, wird diese Nachricht typischerweise intern als separat zugeordneter referenzgekoppelter String gespeichert.

std::chrono::ambiguous_locale_time::operator=

ambiguous_locale_time& operator=( const ambiguous_locale_time& other ) noexcept;
(seit C++20)

Weist den Inhalt mit dem von other zu. Wenn *this und other beide den dynamischen Typ std::chrono::ambiguous_locale_time haben, dann ist std::strcmp(what(), other.what()) == 0 nach der Zuweisung.

Parameter

Sonstiges - ein anderes Ausnahmeobjekt zum Zuweisen

Rückgabewert

*this

std::chrono::ambiguous_locale_time::what

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

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::runtime_error


Abgeleitet von std::exception

Memberfunktionen

[virtuell]
zerstört das Ausnahmeobjekt
(virtuelle öffentliche Memberfunktion von std::exception) [bearbeiten]
[virtuell]
gibt einen erklärenden String zurück
(virtuelle öffentliche Memberfunktion von std::exception) [bearbeiten]

[bearbeiten] Siehe auch

Ausnahme, die geworfen wird, um zu melden, dass eine Lokalzeit nicht existiert
(Klasse) [bearbeiten]