Struct clock_time_conversion
Tratto che specifica come convertire un oggetto time_point
da un tipo di orologio a un altro, mantenendo il punto nel tempo equivalente.
Sintassi
// C++20
1) template<class Dest, class Source> struct clock_time_conversion {};
2) template<class Clock> struct clock_time_conversion<Clock, Clock>;
3) template<> struct clock_time_conversion<system_clock, system_clock>;
4) template<> struct clock_time_conversion<utc_clock, utc_clock>;
5) template<> struct clock_time_conversion<system_clock, utc_clock>;
6) template<> struct clock_time_conversion<utc_clock, system_clock>;
7) template<class Clock> struct clock_time_conversion<Clock, system_clock>;
8) template<class Clock> struct clock_time_conversion<system_clock, Clock>;
9) template<class Clock> struct clock_time_conversion<Clock, utc_clock>;
10) template<class Clock> struct clock_time_conversion<utc_clock, Clock>;
Parametri del modello
Clock
Tipo di orologio da/a da/a.
Dest
Tipo di orologio in cui eseguire la conversione.
Source
Tipo di orologio da cui eseguire la conversione.
I tratti forniscono le conversioni seguenti:
1) Uno struct vuoto definito solo in modo che possa essere specializzato.
2-4) Conversioni di identità. Restituisce lo stesso orologio passato.
5-6) Conversione tra sys_time
e utc_time
chiamate utc_clock::to_sys
o utc_clock::from_sys
a seconda della direzione della conversione.
7-8) Conversione tra sys_time
e l'orologio specificato, quando il clock specificato supporta to_sys
e from_sys
, genera una chiamata a Clock::to_sys
o Clock::from_sys
, a seconda della direzione della conversione.
9-10) Conversione tra utc_time
e l'orologio specificato, quando il clock specificato supporta from_utc
e to_sys
, restituisce una chiamata a Clock::to_utc
o Clock::from_utc
, a seconda della direzione della conversione.
Membri
Nome | Descrizione |
---|---|
operator () |
Converte un oggetto time_point da un orologio a un altro. |
Osservazioni:
In genere non si userà questo tratto direttamente nel codice. Viene usato dalla clock_cast
funzione di conversione.
Requisiti
Intestazione:<chrono
>
Spazio dei nomi: std::chrono
Opzione del compilatore: /std:c++latest
operator()
Converte un oggetto time_point
da un tipo di orologio a un altro mantenendo l'equivalente temporizzato.
Sintassi
1)
template <class Duration>
time_point<Clock, Duration> operator()(const time_point<Clock, Duration>& t) const;
2)
template <class Duration>
sys_time<Duration> operator()(const sys_time<Duration> & t) const;
3)
template <class Duration>
utc_time<Duration> operator()(const utc_time<Duration>& t) const;
4)
template <class Duration>
sys_time<Duration> operator()(const utc_time<Duration>& t) const;
5)
template <class Duration>
utc_time<Duration> operator()(const sys_time<Duration>& t) const;
Parametri
t
Oggetto time_point
da convertire.
Valore restituito
1-3) Conversioni di identità. Nessuna conversione. Restituisce t
senza modifiche.
4) Restituisce utc_clock::to_sys(t)
.
5) Restituisce utc_clock::from_sys(t)
.
Guide alla deduzione
Per sono disponibili le guide di deduzione seguenti:template <class Duration> operator()
1)
template <class Duration> auto operator()(const sys_time<Duration>& t) const
-> decltype(Clock::from_sys(t));
2)
template <class Duration> auto operator()(const time_point<SourceClock, Duration>& t) const
-> decltype(Clock::to_sys(t));
3)
template <class Duration> auto operator()(const utc_time<Duration>& t) const
-> decltype(Clock::from_utc(t));
4)
template <class Duration> auto operator()(const time_point<Clock, Duration>& t) const
-> decltype(Clock::to_utc(t));
1) Partecipa alla risoluzione dell'overload solo quando Clock
supporta from_sys()
e restituisce time_point<Clock, Duration>
.
2) Partecipa alla risoluzione dell'overload solo quando Clock
supporta to_sys()
e restituisce sys_time<Duration>
.
3) Partecipa alla risoluzione dell'overload solo quando Clock
supporta from_utc()
e restituisce time_point<Clock, Duration>
.
4) Partecipa alla risoluzione dell'overload solo quando Clock
supporta to_utc()
e restituisce utc_time<Duration>
.
Esempio: clock_time_conversion
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
auto sd = sys_days{ 2021y / July / 26 };
auto time = clock_time_conversion<utc_clock, system_clock>{}(sd);
std::cout << time << "\n";
return 0;
}
2021-07-26 00:00:00