Struct clock_time_conversion
Uma característica que especifica como converter um time_point
de um tipo de relógio em outro, mantendo o ponto equivalente no tempo.
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 de modelo
Clock
Um tipo de relógio do/no qual converter.
Dest
O tipo de relógio no qual converter.
Source
O tipo de relógio do qual converter.
As características fornecem as seguintes conversões:
1) Um struct vazio que é definido somente para que possa ser especializado.
2-4) Conversões de identidade. Retorna o mesmo relógio que você passa.
5-6) Converter entre sys_time
e utc_time
chama utc_clock::to_sys
ou utc_clock::from_sys
dependendo da direção da conversão.
7-8) Converter entre sys_time
e o relógio especificado, quando o relógio especificado dá suporte a 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 em outro. |
Comentários
Normalmente, você não usará essa característica diretamente em seu código. Ela é usada pela função de conversão clock_cast
.
Requisitos
Cabeçalho<chrono
>:
Namespace: std::chrono
Opção do compilador: /std:c++latest
operator()
Converte um time_point
de um tipo de relógio em outro enquanto mantém o ponto equivalente no tempo.
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
a ser convertido.
Valor retornado
1-3) Conversões de identidade. Sem conversão. Retorna t
sem alterações.
4) Retorna utc_clock::to_sys(t)
.
5) Retorna utc_clock::from_sys(t)
.
Guias de dedução
Os seguintes guias de dedução são fornecidos 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 da resolução de sobrecarga somente quando Clock
dá suporte a from_sys()
e retorna time_point<Clock, Duration>
.
2) Participa da resolução de sobrecarga somente quando Clock
dá suporte a to_sys()
e retorna sys_time<Duration>
.
3) Participa da resolução de sobrecarga somente quando Clock
dá suporte a from_utc()
e retorna time_point<Clock, Duration>
.
4) Participa da resolução de sobrecarga somente quando Clock
dá suporte a to_utc()
e retorna 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