D.1.2. Шаблон класса std::chrono::time_point

Шаблон класса std::chrono::time_point представляет момент времени, измеренный по конкретным часам. Задается в виде интервала, прошедшего с момента эпохи данных часов. Параметр шаблона Clock задает часы (у разных часов должны быть разные типы), а параметр Duration — тип для измерения интервала от эпохи, который должен быть конкретизацией шаблона std::chrono::duration. По умолчанию Duration совпадает с подразумеваемым типом интервала, определенным в Clock.

Определение класса

template <class Clock, class Duration = typename Clock::duration>

class time_point {

public:

 typedef Clock clock;

 typedef Duration duration;

 typedef typename duration::rep rep;

 typedef typename duration::period period;

 time_point();

 explicit time_point(const duration& d);

 template <class Duration2>

 time_point(const time_point<clock, Duration2>& t);

 duration time_since_epoch() const;

 time_point& operator+=(const duration& d);

 time_point& operator-=(const duration& d);

 static constexpr time_point min();

 static constexpr time_point max();

};

STD::CHRONO::TIME_POINT , КОНСТРУКТОР ПО УМОЛЧАНИЮ

Конструирует объект time_point, представляющий эпоху часов Clock; внутренний интервал инициализируется значением Duration::zero().

Объявление

time_point();

Постусловие

Для сконструированного по умолчанию объекта tp типа time_point имеет место равенство tp.time_since_epoch() == tp::duration::zero().

STD::CHRONO::TIME_POINT , КОНСТРУКТОР ИЗ ИНТЕРВАЛА

Конструирует объект time_point, представляющий заданный интервал от эпохи часов Clock.

Объявление

explicit time_point(const duration& d);

Постусловие

Для объекта tp типа time_point, созданного конструктором tp(d) из некоторого интервала d, имеет место равенство tp.time_since_epoch() == d.

STD::CHRONO::TIME_POINT , КОНВЕРТИРУЮЩИЙ КОНСТРУКТОР

Конструирует объект time_point из другого объекта time_point с таким же типом Clock, по другим типом Duration.

Объявление

template <class Duration2>

time_point(const time_point<clock, Duration2>& t);

Требования

Для типа Duration2 должно существовать неявное преобразование в тип Duration.

Результат

Эквивалентно выражению time_point(t.time_since_epoch()).

Значение, возвращенное функцией t.time_since_epoch() неявно преобразуется в объект типа Duration, который сохраняется в новом объекте типа time_point.

STD::CHRONO::TIME_POINT::TIME_SINCE_EPOCH , ФУНКЦИЯ-ЧЛЕН

Возвращает интервал от эпохи часов для данного объекта типа time_point.

Объявление

duration time_since_epoch() const;

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

Значение duration, хранящееся в *this.

STD::CHRONO::TIME_POINT::OPERATOR+= , СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ

Прибавляет указанный интервал duration к значению, хранящемуся в данном объекте time_point.

Объявление

time_point& operator+=(const duration& d);

Результат

Прибавляет d к внутреннему интервалу *this, эквивалентно this->internal_duration += d.

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

*this

STD::CHRONO::TIME_POINT::OPERATOR-= , СОСТАВНОЙ ОПЕРАТОР ПРИСВАИВАНИЯ

Вычитает указанный интерфейс duration из значения, хранящегося в данном объекте time_point.

Объявление

time_point& operator-=(const duration& d);

Результат

Вычитает d из внутреннего интервала *this, эквивалентно this->internal_duration -= d.

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

*this

STD::CHRONO::TIME_POINT::MIN , СТАТИЧЕСКАЯ ФУНКЦИЯ-ЧЛЕН

Получает объект time_point, представляющий минимально возможное для данного типа значение.

Объявление

static constexpr time_point min();

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

time_point(time_point::duration::min()) (см. 11.1.1.15)

STD::CHRONO::TIME_POINT::MAX, СТАТИЧЕСКАЯ ФУНКЦИЯ-ЧЛЕН

Получает объект time_point, представляющий максимально возможное для данного типа значение.

Объявление

static constexpr time_point max();

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

time_point(time_point::duration::max()) (см. 11.1.1.16)