Estructura clock_time_conversion
Rasgo que especifica cómo convertir un time_point
de un tipo de reloj a otro, manteniendo el punto equivalente en el tiempo.
Sintaxis
// 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>;
Parámetros de plantilla
Clock
Tipo de reloj desde o hacia el que se va a convertir.
Dest
Tipo de reloj hacia el que se va a convertir.
Source
Tipo de reloj desde el que se va a convertir.
Los rasgos proporcionan las conversiones siguientes:
1) Estructura vacía que se define solo para que se pueda especializar.
2-4) Conversiones de identidad. Devuelve el mismo reloj que pasa.
5-6) La conversión entre sys_time
y utc_time
llama a utc_clock::to_sys
o utc_clock::from_sys
dependiendo de la dirección de la conversión.
7-8) La conversión entre sys_time
y el reloj especificado, cuando el reloj especificado admite to_sys
y from_sys
, da como resultado una llamada a Clock::to_sys
o Clock::from_sys
, dependiendo de la dirección de la conversión.
9-10) Convertir entre utc_time
y el reloj especificado, cuando el reloj especificado admite from_utc
y to_sys
, da como resultado una llamada a Clock::to_utc
o Clock::from_utc
, dependiendo de la dirección de la conversión.
Miembros
Nombre | Descripción |
---|---|
operator () |
Convierte un time_point de un reloj en otro. |
Comentarios
Normalmente no usará este rasgo directamente en el código. Lo usa la función de conversión clock_cast
.
Requisitos
Encabezado<chrono
>:
Espacio de nombres: std::chrono
Opción del compilador: /std:c++latest
operator()
Convierte un time_point
de un tipo de reloj a otro mientras mantiene el punto equivalente en el tiempo.
Sintaxis
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;
Parámetros
t
El time_point
que se va a convertir.
Valor devuelto
1-3) Conversiones de identidad. Sin conversión. Devuelve t
sin cambios.
4) Devuelve utc_clock::to_sys(t)
.
5) Devuelve utc_clock::from_sys(t)
.
Guías de deducción
Se proporcionan las siguientes guías de deducción para 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) Participa en la resolución de sobrecarga solo cuando Clock
admite from_sys()
y devuelve time_point<Clock, Duration>
.
2) Participa en la resolución de sobrecarga solo cuando Clock
admite to_sys()
y devuelve sys_time<Duration>
.
3) Participa en la resolución de sobrecarga solo cuando Clock
admite from_utc()
y devuelve time_point<Clock, Duration>
.
4) Participa en la resolución de sobrecarga solo cuando Clock
admite to_utc()
y devuelve utc_time<Duration>
.
Ejemplo: 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