forked from HowardHinnant/date
Added an clock_time_conversion trait, that should be specialized with SourceClock and DestClock respectively and provide an function that convert time_point in SourceClock to equivalent time_point in DestClock. This function has following specializations: 1) <sys_clock, utc_clock> - convert sys_time to utc_time 2) <utc_clock, sys_clock> - convert utc_time to sys_time 3) <Clock, sys_clock> - calls Clock::to_sys if it returns sys_time 4) <Clock, utc_clock> - calls Clock::to_utc if it returns utc_time 5) <sys_clock, Clock> - calls Clock::from_sys if it returns time_point<Clock> 5) <utc_clock, Clock> - calls Clock::from_utc if it returns time_point<Clock> Implemented an clock_cast<DestClock>(time_point<SourceClock, Dur> st), that works as follow: 1) If DestClock is same as SourceClock, returns std 2) Otherwise, if clock_conversion<SourceClock, DestClock> available, uses it 3) Otherwise, if tries using clock_conversion<SourceClock, CommClock> and clock_conversion<CommClock, DestClock> for CommClock being utc_time or sys_time 4) Otherwise, tries using clock_conversion<SourceClock, utc_clock> and clock_conversion<sys_clock, DestinationClock> or reversed (firstly convert to sys_clock, then to utc_clock) to convert.