Namensräume
Varianten
Aktionen

std::chrono::clock_time_conversion

Von cppreference.com
< cpp‎ | chrono
 
 
Datums- und Zeitbibliothek
Zeitpunkt
(C++11)
clock_time_conversion
(C++20)  
(C++20)
Dauer
(C++11)
Uhren
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
Tageszeit
(C++20)(C++20)
(C++20)(C++20)
(C++20)
Kalender
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)(C++20)
chrono E/A
(C++20)

 
Definiert in Header <chrono>
template< class Dest, class Source >
struct clock_time_conversion {};
(seit C++20)

std::chrono::clock_time_conversion ist ein Trait, der angibt, wie ein std::chrono::time_point der Source-Uhr in einen der Dest-Uhr umgewandelt wird. Dies geschieht durch Bereitstellung eines const-aufrufbaren operator(), der ein Argument vom Typ std::chrono::time_point<Source, Duration> akzeptiert und einen std::chrono::time_point<Dest, OtherDuration> zurückgibt, der einen äquivalenten Zeitpunkt darstellt. Die Dauer des zurückgegebenen Zeitpunkts wird aus der Quell-Dauer auf eine Weise berechnet, die sich für jede Spezialisierung unterscheidet. clock_time_conversion wird normalerweise nur indirekt über std::chrono::clock_cast verwendet.

Ein Programm kann clock_time_conversion spezialisieren, wenn mindestens einer der Template-Parameter ein benutzerdefinierter Uhrentyp ist.

Die primäre Template ist eine leere Struktur. Der Standard definiert die folgenden Spezialisierungen

template< class Clock >
struct clock_time_conversion<Clock, Clock>;
(1) (seit C++20)
template<>
struct clock_time_conversion<std::chrono::system_clock, std::chrono::system_clock>;
(2) (seit C++20)
template<>
struct clock_time_conversion<std::chrono::utc_clock, std::chrono::utc_clock>;
(3) (seit C++20)
template<>
struct clock_time_conversion<std::chrono::system_clock, std::chrono::utc_clock>;
(4) (seit C++20)
template<>
struct clock_time_conversion<std::chrono::utc_clock, std::chrono::system_clock>;
(5) (seit C++20)
template< class Clock >
struct clock_time_conversion<Clock, std::chrono::system_clock>;
(6) (seit C++20)
template< class Clock >
struct clock_time_conversion<std::chrono::system_clock, Clock>;
(7) (seit C++20)
template< class Clock >
struct clock_time_conversion<Clock, std::chrono::utc_clock>;
(8) (seit C++20)
template< class Clock >
struct clock_time_conversion<std::chrono::utc_clock, Clock>;
(9) (seit C++20)
1-3) Identitätskonvertierung: operator() gibt eine Kopie des Arguments zurück.
4,5) Konvertierungen zwischen std::chrono::sys_time und std::chrono::utc_time: operator() ruft entsprechend std::chrono::utc_clock::to_sys und std::chrono::utc_clock::from_sys auf.
6,7) Konvertierungen zu und von std::chrono::sys_time, wenn Clock from_sys und to_sys unterstützt: operator() ruft entsprechend Clock::to_sys und Clock::from_sys auf.
8,9) Konvertierungen zu und von std::chrono::utc_time, wenn Clock from_utc und to_utc unterstützt: operator() ruft entsprechend Clock::to_utc und Clock::from_utc auf.

Inhalt

[bearbeiten] Memberfunktionen

Jede Spezialisierung verfügt über einen implizit deklarierten Standardkonstruktor, Kopierkonstruktor, Move-Konstruktor, Kopierzuweisungsoperator, Move-Zuweisungsoperator und Destruktor.

std::chrono::clock_time_conversion::operator()

template< class Duration >

std::chrono::time_point<Clock, Duration>

    operator()( const std::chrono::time_point<Clock, Duration>& t ) const;
(1) (Mitglied der Spezialisierung (1))
template< class Duration >

std::chrono::sys_time<Duration>

    operator()( const std::chrono::sys_time<Duration> & t ) const;
(2) (Mitglied der Spezialisierung (2))
template< class Duration >

std::chrono::utc_time<Duration>

    operator()( const std::chrono::utc_time<Duration>& t ) const;
(3) (Mitglied der Spezialisierung (3))
template< class Duration >

std::chrono::sys_time<Duration>

    operator()( const std::chrono::utc_time<Duration>& t ) const;
(4) (Mitglied der Spezialisierung (4))
template< class Duration >

std::chrono::utc_time<Duration>

    operator()( const std::chrono::sys_time<Duration>& t ) const;
(5) (Mitglied der Spezialisierung (5))
template< class Duration >

auto operator()( const std::chrono::sys_time<Duration>& t ) const

    -> decltype(Clock::from_sys(t));
(6) (Mitglied der Spezialisierung (6))
template< class Duration >

auto operator()( const std::chrono::time_point<SourceClock, Duration>& t ) const

    -> decltype(Clock::to_sys(t));
(7) (Mitglied der Spezialisierung (7))
template< class Duration >

auto operator()( const std::chrono::utc_time<Duration>& t ) const

    -> decltype(Clock::from_utc(t));
(8) (Mitglied der Spezialisierung (8))
template< class Duration >

auto operator()( const std::chrono::time_point<Clock, Duration>& t ) const

    -> decltype(Clock::to_utc(t));
(9) (Mitglied der Spezialisierung (9))

Konvertiert den Argument-std::chrono::time_point in die Zieluhr.

1-3) Identitätskonvertierung. Gibt t unverändert zurück.
4) Gibt std::chrono::utc_clock::to_sys(t) zurück.
6) Gibt Clock::from_sys(t) zurück. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn der Ausdruck Clock::from_sys(t) wohlgeformt ist. Das Programm ist schlecht geformt, wenn Clock::from_sys(t) nicht std::chrono::time_point<Clock, Duration> zurückgibt, wobei Duration eine beliebige gültige Spezialisierung von std::chrono::duration ist.
7) Gibt Clock::to_sys(t) zurück. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn der Ausdruck Clock::to_sys(t) wohlgeformt ist. Das Programm ist schlecht geformt, wenn Clock::to_sys(t) nicht std::chrono::sys_time<Duration> zurückgibt, wobei Duration eine beliebige gültige Spezialisierung von std::chrono::duration ist.
8) Gibt Clock::from_utc(t) zurück. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn der Ausdruck Clock::from_utc(t) wohlgeformt ist. Das Programm ist schlecht geformt, wenn Clock::from_utc(t) nicht std::chrono::time_point<Clock, Duration> zurückgibt, wobei Duration eine beliebige gültige Spezialisierung von std::chrono::duration ist.
9) Gibt Clock::to_utc(t) zurück. Diese Überladung nimmt nur an der Überladungsauflösung teil, wenn der Ausdruck Clock::to_utc(t) wohlgeformt ist. Das Programm ist schlecht geformt, wenn Clock::to_utc(t) nicht std::chrono::utc_time<Duration> zurückgibt, wobei Duration eine beliebige gültige Spezialisierung von std::chrono::duration ist.

Parameter

t - Zu konvertierender Zeitpunkt

Rückgabewert

Das Ergebnis der Konvertierung wie oben beschrieben

1-3) t.
6) Clock::from_sys(t).
7) Clock::to_sys(t).
8) Clock::from_utc(t).
9) Clock::to_utc(t).

[bearbeiten] Siehe auch

wandelt Zeitpunkte einer Uhr in andere um
(Funktions-Template) [bearbeiten]