Compartir a través de


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

Consulte también

<chrono>
clock_cast
Referencia de archivos de encabezado