[time.point.general]

# 30 Time library [[time]](./#time)

## 30.6 Class template time_point [[time.point]](time.point#general)

### 30.6.1 General [time.point.general]

[ð](#lib:time_point)

namespace std::chrono {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_; // *exposition only*public:// [[time.point.cons]](time.point.cons "30.6.2 Constructors"), constructconstexpr time_point(); // has value epochconstexpr explicit time_point(const duration& d); // same as time_point() + dtemplate<class Duration2>constexpr time_point(const time_point<clock, Duration2>& t); // [[time.point.observer]](time.point.observer "30.6.3 Observer"), observerconstexpr duration time_since_epoch() const; // [[time.point.arithmetic]](time.point.arithmetic "30.6.4 Arithmetic"), arithmeticconstexpr time_point& operator++(); constexpr time_point operator++(int); constexpr time_point& operator--(); constexpr time_point operator--(int); constexpr time_point& operator+=(const duration& d); constexpr time_point& operator-=(const duration& d); // [[time.point.special]](time.point.special "30.6.5 Special values"), special valuesstatic constexpr time_point min() noexcept; static constexpr time_point max() noexcept; };}

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L2253)

If Duration is not a specialization of duration,
the program is ill-formed[.](#1.sentence-1)
