Partilhar via


clock_time_conversion estrutura

Uma característica que especifica como converter um time_point de um tipo de relógio para outro, mantendo o ponto no tempo equivalente.

Sintaxe

// 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 do modelo

Clock
Um tipo de relógio para converter de/para.

Dest
O tipo de relógio para o qual converter.

Source
O tipo de relógio a partir do qual converter.

As características fornecem as seguintes conversões:

1) Uma estrutura vazia que é definida apenas para que possa ser especializada.
2-4) Conversões de identidade. Devolve o mesmo relógio que passa.
5-6) Conversão entre sys_time e utc_time chamadas utc_clock::to_sys ou utc_clock::from_sys dependendo da direção da conversão.
7-8) A conversão entre sys_time e o relógio especificado, quando o relógio especificado suporta to_sys e from_sys, resulta em uma chamada para Clock::to_sys ou Clock::from_sys, dependendo da direção da conversão.
9-10) A conversão entre utc_time e o relógio especificado, quando o relógio especificado suporta from_utc e to_sys, resulta em uma chamada para Clock::to_utc ou Clock::from_utc, dependendo da direção da conversão.

Membros

Nome Descrição
operator () Converte um time_point de um relógio para outro.

Observações

Normalmente, você não usará essa característica diretamente em seu código. É usado pela função de clock_cast conversão.

Requerimentos

Cabeçalho:<chrono>

Espaço de nomes: std::chrono

Opção do compilador:/std:c++latest

operator()

Converte um time_point de um tipo de relógio para outro, mantendo o ponto no tempo equivalente.

Sintaxe

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
O time_point para converter.

Valor de retorno

1-3) Conversões de identidade. Sem conversão. Devoluções t sem alterações.
4) Devoluções utc_clock::to_sys(t).
5) Devoluções utc_clock::from_sys(t).

Guias de dedução

São fornecidos template <class Duration> operator()os seguintes guias de dedução:

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 na resolução de sobrecarga apenas quando Clock suporta from_sys() e devolve time_point<Clock, Duration>.
2) Participa na resolução de sobrecarga apenas quando Clock suporta to_sys() e devolve sys_time<Duration>.
3) Participa na resolução de sobrecarga apenas quando Clock suporta from_utc() e devolve time_point<Clock, Duration>.
4) Participa na resolução de sobrecarga apenas quando Clock suporta to_utc() e devolve utc_time<Duration>.

Exemplo: 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

Ver também

<chrono>
clock_cast
de referência de arquivos de cabeçalho