Namespaces
Variants

std::chrono:: clock_time_conversion

From cppreference.net
Определено в заголовочном файле <chrono>
template < class Dest, class Source >
struct clock_time_conversion { } ;
(начиная с C++20)

std::chrono::clock_time_conversion — это характеристика, которая определяет, как преобразовать std::chrono::time_point часов Source в time_point часов 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)
1-3) Преобразование идентичности: operator() возвращает копию аргумента.
4,5) Преобразования между std::chrono::sys_time и std::chrono::utc_time : operator() вызывает std::chrono::utc_clock::to_sys и std::chrono::utc_clock::from_sys соответственно.
6,7) Преобразования в и из std::chrono::sys_time когда Clock поддерживает from_sys и to_sys : operator() вызывает Clock :: to_sys и Clock :: from_sys соответственно.
8,9) Преобразования в и из 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 в целевую систему отсчёта времени.

1-3) Преобразование идентичности. Возвращает t без изменений.
4) Возвращает std:: chrono :: utc_clock :: to_sys ( t ) .
5) Возвращает std:: chrono :: utc_clock :: from_sys ( t ) .
6) Возвращает Clock :: from_sys ( t ) . Эта перегрузка участвует в разрешении перегрузки только если выражение Clock :: from_sys ( t ) является корректно сформированным. Программа является некорректной, если Clock :: from_sys ( t ) не возвращает std:: chrono :: time_point < Clock, Duration > где Duration является некоторой допустимой специализацией std::chrono::duration .
7) Возвращает Clock :: to_sys ( t ) . Эта перегрузка участвует в разрешении перегрузки только если выражение Clock :: to_sys ( t ) является корректно сформированным. Программа является некорректной, если Clock :: to_sys ( t ) не возвращает std:: chrono :: sys_time < Duration > , где Duration является некоторой допустимой специализацией std::chrono::duration .
8) Возвращает Clock :: from_utc ( t ) . Эта перегрузка участвует в разрешении перегрузки только если выражение Clock :: from_utc ( t ) является корректно сформированным. Программа является некорректно сформированной, если Clock :: from_utc ( t ) не возвращает std:: chrono :: time_point < Clock, Duration > , где Duration является некоторой допустимой специализацией std::chrono::duration .
9) Возвращает Clock :: to_utc ( t ) . Эта перегрузка участвует в разрешении перегрузки только если выражение Clock :: to_utc ( t ) является корректно сформированным. Программа является некорректной, если Clock :: to_utc ( t ) не возвращает std:: chrono :: utc_time < Duration > , где Duration является некоторой допустимой специализацией std::chrono::duration .

Параметры

t - временная точка для преобразования

Возвращаемое значение

Результат преобразования, как описано выше:

1-3) t .
6) Clock :: from_sys ( t ) .
7) Clock :: to_sys ( t ) .
8) Clock :: from_utc ( t ) .
9) Clock :: to_utc ( t ) .

Смотрите также

(C++20)
преобразует временные точки одного часового механизма в другой
(шаблон функции)