Структура clock_time_conversion
Признак, указывающий, как преобразовать time_point
часы из одного типа в другой, сохраняя эквивалентную точку во времени.
Синтаксис
// 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>;
Параметры шаблона
Clock
Тип часов для преобразования из/в.
Dest
Тип часов для преобразования.
Source
Тип часов для преобразования из.
Признаки предоставляют следующие преобразования:
1) Пустая структура, определяемая только таким образом, чтобы она была специализирована.
2-4) Преобразования удостоверений. Возвращает те же часы, которые вы передаете.
5-6) Преобразование между sys_time
вызовами utc_clock::to_sys
или utc_time
utc_clock::from_sys
в зависимости от направления преобразования.
7-8) Преобразование между sys_time
и указанными часами, когда указанные часы поддерживаются to_sys
и from_sys
, приводит к вызову Clock::to_sys
или Clock::from_sys
в зависимости от направления преобразования.
9-10) Преобразование между utc_time
и указанными часами, когда указанные часы поддерживаются from_utc
и to_sys
, приводит к вызову Clock::to_utc
или Clock::from_utc
, в зависимости от направления преобразования.
Участники
Имя | Описание |
---|---|
operator () |
time_point Преобразуется из одного часа в другой. |
Замечания
Обычно этот признак не будет использоваться непосредственно в коде. Он используется функцией clock_cast
преобразования.
Требования
Заголовок.<chrono
>
Пространство имен: std::chrono
Параметр компилятора: /std:c++latest
operator()
Преобразует time_point
один тип часов в другой при сохранении эквивалентной точки во времени.
Синтаксис
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;
Параметры
t
Преобразуемый time_point
объект.
Возвращаемое значение
1-3) Преобразования удостоверений. Преобразование не выполняется. Возвращается t
без каких-либо изменений.
4) Возвращается utc_clock::to_sys(t)
.
5) Возвращается utc_clock::from_sys(t)
.
Руководства по вычетам
Ниже приведены руководства по 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) Участвует в разрешении перегрузки только при Clock
поддержке from_sys()
и возврате time_point<Clock, Duration>
.
2) Участвует в разрешении перегрузки только при Clock
поддержке to_sys()
и возврате sys_time<Duration>
.
3) Участвует в разрешении перегрузки только при Clock
поддержке from_utc()
и возврате time_point<Clock, Duration>
.
4) Участвует в разрешении перегрузки только при Clock
поддержке to_utc()
и возврате utc_time<Duration>
.
Пример: 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