std::chrono::clock_time_conversion
| Определено в заголовочном файле <chrono>
|
||
template<class Dest, class Source> struct clock_time_conversion { }; |
(начиная с C++20) | |
std::chrono::clock_time_conversion это свойство, указывающее, как преобразовать std::chrono::time_point часов Source в часы Dest. Оно делает это, предоставляя константо вызываемый operator(), который принимает аргумент типа std::chrono::time_point<Source, Duration> и возвращает std::chrono::time_point<Dest, OtherDuration>, представляющий эквивалентный момент времени. Длительность возвращаемого момента времени вычисляется из исходной длительности способом, который различается для каждой специализации. clock_time_conversion обычно используется только косвенно, через std::chrono::clock_cast.
Программа может специализировать clock_time_conversion, если по крайней мере один из параметров шаблона является определяемым пользователем типом часов.
Первичный шаблон представляет собой пустую структуру. Стандарт определяет следующие специализации:
<tbody> </tbody> template<class Clock> struct clock_time_conversion<Clock, Clock>; |
(1) | (начиная с C++20) |
template<> struct clock_time_conversion<std::chrono::system_clock, std::chrono::system_clock>; |
(2) | (начиная с C++20) |
template<> struct clock_time_conversion<std::chrono::utc_clock, std::chrono::utc_clock>; |
(3) | (начиная с C++20) |
template<> struct clock_time_conversion<std::chrono::system_clock, std::chrono::utc_clock>; |
(4) | (начиная с C++20) |
template<> struct clock_time_conversion<std::chrono::utc_clock, std::chrono::system_clock>; |
(5) | (начиная с C++20) |
template<class Clock> struct clock_time_conversion<Clock, std::chrono::system_clock>; |
(6) | (начиная с C++20) |
template<class Clock> struct clock_time_conversion<std::chrono::system_clock, Clock>; |
(7) | (начиная с C++20) |
template<class Clock> struct clock_time_conversion<Clock, std::chrono::utc_clock>; |
(8) | (начиная с C++20) |
template<class Clock> struct clock_time_conversion<std::chrono::utc_clock, Clock>; |
(9) | (начиная с C++20) |
operator() возвращает копию аргумента.operator() вызывает std::chrono::utc_clock::to_sys и std::chrono::utc_clock::from_sys, соответственно.Clock поддерживает from_sys и to_sys: operator() вызывает Clock::to_sys и Clock::from_sys, соответственно.Clock поддерживает from_utc и to_utc: operator() вызывает Clock::to_utc и Clock::from_utc, соответственно.Функции-элементы
Каждая специализация имеет неявно объявленный конструктор по умолчанию, конструктор копирования, конструктор перемещения, оператор присваивания копированием, оператор присваивания перемещением и деструктор.
std::chrono::clock_time_conversion::operator()
<tbody> </tbody> template <class Duration> std::chrono::time_point<Clock, Duration> operator()(const std::chrono::time_point<Clock, Duration>& t) const; |
(1) | (элемент специализации (1)) |
template <class Duration> std::chrono::sys_time<Duration> operator()(const std::chrono::sys_time<Duration> & t) const; |
(2) | (элемент специализации (2)) |
template <class Duration> std::chrono::utc_time<Duration> operator()(const std::chrono::utc_time<Duration>& t) const; |
(3) | (элемент специализации (3)) |
template <class Duration> std::chrono::sys_time<Duration> operator()(const std::chrono::utc_time<Duration>& t) const; |
(4) | (элемент специализации (4)) |
template <class Duration> std::chrono::utc_time<Duration> operator()(const std::chrono::sys_time<Duration>& t) const; |
(5) | (элемент специализации (5)) |
template <class Duration> auto operator()(const std::chrono::sys_time<Duration>& t) const -> decltype(Clock::from_sys(t)); |
(6) | (элемент специализации (6)) |
template <class Duration> auto operator()(const std::chrono::time_point<SourceClock, Duration>& t) const -> decltype(Clock::to_sys(t)); |
(7) | (элемент специализации (7)) |
template <class Duration> auto operator()(const std::chrono::utc_time<Duration>& t) const -> decltype(Clock::from_utc(t)); |
(8) | (элемент специализации (8)) |
template <class Duration> auto operator()(const std::chrono::time_point<Clock, Duration>& t) const -> decltype(Clock::to_utc(t)); |
(9) | (элемент специализации (9)) |
Преобразует аргумент std::chrono::time_point в назначенные часы.
t без изменений.std::chrono::utc_clock::to_sys(t).std::chrono::utc_clock::from_sys(t).Clock::from_sys(t). Эта перегрузка участвует в разрешении перегрузки, только если выражение Clock::from_sys(t) корректно. Программа некорректна, если Clock::from_sys(t) не возвращает std::chrono::time_point<Clock, Duration>, где Duration это некоторая допустимая специализация std::chrono::duration.Clock::to_sys(t). Эта перегрузка участвует в разрешении перегрузки, только если выражение Clock::to_sys(t) корректно. Программа некорректна, если Clock::to_sys(t) не возвращает std::chrono::sys_time<Duration>, где Duration это допустимая специализация std::chrono::duration.Clock::from_utc(t). Эта перегрузка участвует в разрешении перегрузки, только если выражение Clock::from_utc(t) корректно. Программа некорректна, если Clock::from_utc(t) не возвращает std::chrono::time_point<Clock, Duration>, где Duration это некоторая допустимая специализация std::chrono::duration.Clock::to_utc(t). Эта перегрузка участвует в разрешении перегрузки, только если выражение Clock::to_utc(t) корректно. Программа некорректна, если Clock::to_utc(t) не возвращает std::chrono::utc_time<Duration>, где Duration это некоторая допустимая специализация std::chrono::duration.Параметры
| t | — | момент времени для преобразования |
Возвращаемое значение
Результат преобразования, как описано выше:
t.std::chrono::utc_clock::to_sys(t).std::chrono::utc_clock::from_sys(t).Clock::from_sys(t). Clock::to_sys(t). Clock::from_utc(t).Clock::to_utc(t).
Смотрите также
(C++20) |
конвертирует моменты времени одних часов в другие (шаблон функции) |