Поделиться через


Структура 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

См. также

<chrono>
clock_cast
Справочник по файлам заголовков