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, если хотя бы один из параметров шаблона является определённым пользователем типом часов.
Первичный шаблон представляет собой пустую структуру. Стандарт определяет следующие специализации:
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() возвращает копию аргумента.std::chrono::sys_time и std::chrono::utc_time: operator() вызывает соответственно std::chrono::utc_clock::to_sys и std::chrono::utc_clock::from_sys.std::chrono::sys_time и из него, если Clock поддерживает from_sys и to_sys: operator() вызывает соответственно Clock::to_sys и Clock::from_sys.std::chrono::utc_time и из него, если Clock поддерживает from_utc и to_utc: operator() вызывает соответственно Clock::to_utc и Clock::from_utc.Функции-члены
Для каждой специализации неявно объявляются конструктор по умолчанию, копирующий конструктор, перемещающий конструктор, оператор копирующего присваивания, оператор перемещающего присваивания и деструктор.
std::chrono::clock_time_conversion::operator()
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) | преобразует точки времени одних часов в точки времени других (шаблон функции) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/chrono/clock_time_conversion