clock_time_conversion
Struct
Cecha określająca sposób konwertowania time_point
z jednego typu zegara na inny przy zachowaniu równoważnego punktu w czasie.
Składnia
// 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>;
Parametry szablonu
Clock
Typ zegara do konwersji z/na.
Dest
Typ zegara, na który ma być konwertowany.
Source
Typ zegara do konwersji z.
Cechy zapewniają następujące konwersje:
1) Pusta struktura, która jest zdefiniowana tylko tak, aby mogła być wyspecjalizowana.
2–4) Konwersje tożsamości. Zwraca ten sam zegar, w którym przechodzisz.
5–6) Konwertowanie między wywołaniami sys_time
utc_clock::to_sys
i utc_time
lub utc_clock::from_sys
w zależności od kierunku konwersji.
7-8) Konwertowanie między sys_time
i określony zegar, gdy określony zegar obsługuje to_sys
i from_sys
, powoduje wywołanie metody Clock::to_sys
lub Clock::from_sys
, w zależności od kierunku konwersji.
9-10) Konwertowanie między utc_time
i określony zegar, gdy określony zegar obsługuje from_utc
i to_sys
, powoduje wywołanie metody Clock::to_utc
lub Clock::from_utc
, w zależności od kierunku konwersji.
Elementy członkowskie
Nazwa/nazwisko | opis |
---|---|
operator () |
Konwertuje zegar z jednego zegara time_point na inny. |
Uwagi
Zazwyczaj ta cecha nie będzie używana bezpośrednio w kodzie. Jest on używany przez funkcję konwersji clock_cast
.
Wymagania
Nagłówek:<chrono
>
Przestrzeń nazw: std::chrono
Opcja kompilatora: /std:c++latest
operator()
Konwertuje typ z jednego zegara time_point
na inny przy zachowaniu równoważnego punktu w czasie.
Składnia
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;
Parametry
t
Element time_point
do konwersji.
Wartość zwracana
1–3) Konwersje tożsamości. Brak konwersji. Zwraca bez t
żadnych zmian.
4) Zwraca wartość utc_clock::to_sys(t)
.
5) Zwraca. utc_clock::from_sys(t)
Przewodniki odliczeń
Dostępne są następujące przewodniki odliczeń: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) Uczestniczy w rozwiązywaniu przeciążeń tylko wtedy, gdy Clock
obsługuje from_sys()
i zwraca wartość time_point<Clock, Duration>
.
2) Uczestniczy w rozwiązywaniu przeciążeń tylko wtedy, gdy Clock
obsługuje to_sys()
i zwraca wartość sys_time<Duration>
.
3) Uczestniczy w rozwiązywaniu przeciążeń tylko wtedy, gdy Clock
obsługuje from_utc()
i zwraca wartość time_point<Clock, Duration>
.
4) Uczestniczy w rozwiązywaniu przeciążeń tylko wtedy, gdy Clock
obsługuje to_utc()
i zwraca wartość utc_time<Duration>
.
Przykład: 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