Condividi tramite


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_timee 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

Vedi anche

<chrono>
clock_cast
Riferimento file di intestazione