Пространства имён
Варианты
Действия

std::chrono::clock_time_conversion

Материал из cppreference.com
< cpp‎ | chrono
 
 
Библиотека утилит
Языковая поддержка
Поддержка типов (базовые типы, RTTI)
Макросы тестирования функциональности библиотеки (C++20)    
Управление динамической памятью
Программные утилиты
Поддержка сопрограмм(C++20)
Вариативные функции
Трёхстороннее сравнение (C++20)
(C++20)
(C++20)(C++20)(C++20)(C++20)(C++20)(C++20)
Общие утилиты
Дата и время
Функциональные объекты
Библиотека форматирования(C++20)
(C++11)
Операторы отношения (устарело в C++20)
Целочисленные функции сравнения
(C++20)(C++20)(C++20)    
(C++20)
Операции обмена и типа
(C++11)
(C++11)
(C++17)
Общие лексические типы
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
Элементарные преобразования строк
(C++17)
(C++17)
 
 
Определено в заголовочном файле <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)
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()(conststd::chrono::time_point<Clock, Duration>& t)const;
(1) (элемент специализации (1))
template<class Duration>

std::chrono::sys_time<Duration>

    operator()(conststd::chrono::sys_time<Duration>& t)const;
(2) (элемент специализации (2))
template<class Duration>

std::chrono::utc_time<Duration>

    operator()(conststd::chrono::utc_time<Duration>& t)const;
(3) (элемент специализации (3))
template<class Duration>

std::chrono::sys_time<Duration>

    operator()(conststd::chrono::utc_time<Duration>& t)const;
(4) (элемент специализации (4))
template<class Duration>

std::chrono::utc_time<Duration>

    operator()(conststd::chrono::sys_time<Duration>& t)const;
(5) (элемент специализации (5))
template<class Duration>

auto operator()(conststd::chrono::sys_time<Duration>& t)const

    -> decltype(Clock::from_sys(t));
(6) (элемент специализации (6))
template<class Duration>

auto operator()(conststd::chrono::time_point<SourceClock, Duration>& t)const

    -> decltype(Clock::to_sys(t));
(7) (элемент специализации (7))
template<class Duration>

auto operator()(conststd::chrono::utc_time<Duration>& t)const

        -> decltype(Clock::from_utc(t));
(8) (элемент специализации (8))
template<class Duration>

auto operator()(conststd::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)
конвертирует моменты времени одних часов в другие
(шаблон функции)[править]
close