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_;                                                
  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++();
    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);
    
    static constexpr time_point min() noexcept;
    static constexpr time_point max() noexcept;
  };
}
Clock shall either
meet the 
Cpp17Clock requirements (
[time.clock.req])
or be the type 
local_t. If 
Duration is not an instance of 
duration,
the program is ill-formed
.