23 General utilities library [utilities]
template <class Clock, class Duration = typename Clock::duration>
class time_point {
public:
using clock = Clock;
using duration = Duration;
using rep = typename duration::rep;
using period = typename duration::period;
private:
duration d_;
public:
constexpr time_point(); constexpr explicit time_point(const duration& d); template <class Duration2>
constexpr time_point(const time_point<clock, Duration2>& t);
constexpr duration time_since_epoch() const;
constexpr time_point& operator+=(const duration& d);
constexpr time_point& operator-=(const duration& d);
static constexpr time_point min();
static constexpr time_point max();
};
If
Duration is not an instance of
duration,
the program is ill-formed
.constexpr time_point();
Effects: Constructs an object of type
time_point, initializing
d_ with
duration::zero(). Such a
time_point object
represents the epoch
.constexpr explicit time_point(const duration& d);
Effects: Constructs an object of type
time_point, initializing
d_ with
d. Such a
time_point object represents the epoch
+ d.template <class Duration2>
constexpr time_point(const time_point<clock, Duration2>& t);
Remarks: This constructor shall not participate in overload resolution unless
Duration2
is implicitly convertible to
duration. Effects: Constructs an object of type
time_point, initializing
d_ with
t.time_since_epoch(). constexpr duration time_since_epoch() const;
constexpr time_point& operator+=(const duration& d);
Effects: As if by: d_ += d;
constexpr time_point& operator-=(const duration& d);
Effects: As if by: d_ -= d;
static constexpr time_point min();
Returns: time_point(duration::min()). static constexpr time_point max();
Returns: time_point(duration::max()). template <class Clock, class Duration1, class Rep2, class Period2>
constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
Returns: CT(lhs.time_since_epoch() + rhs), where
CT is the type of the return value
. template <class Rep1, class Period1, class Clock, class Duration2>
constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
operator+(const duration<Rep1, Period1>& lhs, const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Rep2, class Period2>
constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
Returns: CT(lhs.time_since_epoch() - rhs),
where
CT is the type of the return value
. template <class Clock, class Duration1, class Duration2>
constexpr common_type_t<Duration1, Duration2>
operator-(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs);
Returns: lhs.time_since_epoch() - rhs.time_since_epoch(). template <class Clock, class Duration1, class Duration2>
constexpr bool operator==(const time_point<Clock, Duration1>& lhs,
const time_point<Clock, Duration2>& rhs);
Returns: lhs.time_since_epoch() == rhs.time_since_epoch(). template <class Clock, class Duration1, class Duration2>
constexpr bool operator!=(const time_point<Clock, Duration1>& lhs,
const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Duration2>
constexpr bool operator<(const time_point<Clock, Duration1>& lhs,
const time_point<Clock, Duration2>& rhs);
Returns: lhs.time_since_epoch() < rhs.time_since_epoch(). template <class Clock, class Duration1, class Duration2>
constexpr bool operator<=(const time_point<Clock, Duration1>& lhs,
const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Duration2>
constexpr bool operator>(const time_point<Clock, Duration1>& lhs,
const time_point<Clock, Duration2>& rhs);
template <class Clock, class Duration1, class Duration2>
constexpr bool operator>=(const time_point<Clock, Duration1>& lhs,
const time_point<Clock, Duration2>& rhs);
template <class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& t);
Remarks: This function shall not participate in overload resolution
unless
ToDuration is a specialization of
duration. Returns:
time_point<Clock, ToDuration>(duration_cast<ToDuration>(t.time_since_epoch()))
template <class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
floor(const time_point<Clock, Duration>& tp);
Remarks: This function shall not participate in overload resolution
unless
ToDuration is a specialization of
duration. Returns: time_point<Clock, ToDuration>(floor<ToDuration>(tp.time_since_epoch())). template <class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
ceil(const time_point<Clock, Duration>& tp);
Remarks: This function shall not participate in overload resolution
unless
ToDuration is a specialization of
duration. Returns: time_point<Clock, ToDuration>(ceil<ToDuration>(tp.time_since_epoch())). template <class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
round(const time_point<Clock, Duration>& tp);
Remarks: This function shall not participate in overload resolution
unless
ToDuration is a specialization of
duration, and
treat_as_floating_point_v<typename ToDuration::rep> is
false. Returns: time_point<Clock, ToDuration>(round<ToDuration>(tp.time_since_epoch())).