60 lines
2.1 KiB
Markdown
60 lines
2.1 KiB
Markdown
[time.traits.specializations]
|
||
|
||
# 30 Time library [[time]](./#time)
|
||
|
||
## 30.4 Time-related traits [[time.traits]](time.traits#specializations)
|
||
|
||
### 30.4.3 Specializations of common_type [time.traits.specializations]
|
||
|
||
[ð](#lib:common_type)
|
||
|
||
`template<class Rep1, class Period1, class Rep2, class Period2>
|
||
struct common_type<chrono::duration<Rep1, Period1>, chrono::duration<Rep2, Period2>> {
|
||
using type = chrono::duration<common_type_t<Rep1, Rep2>, see below>;
|
||
};
|
||
`
|
||
|
||
[1](#1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L1166)
|
||
|
||
The period of the duration indicated by this specialization ofcommon_type is the greatest common divisor of Period1 andPeriod2[.](#1.sentence-1)
|
||
|
||
[*Note [1](#note-1)*:
|
||
|
||
This can be computed by forming a ratio of the
|
||
greatest common divisor of Period1::num and Period2::num and the
|
||
least common multiple of Period1::den and Period2::den[.](#1.sentence-2)
|
||
|
||
â *end note*]
|
||
|
||
[2](#2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L1176)
|
||
|
||
[*Note [2](#note-2)*:
|
||
|
||
The typedef name type is a synonym for theduration with the largest tick period possible where bothduration arguments will convert to it without requiring a division
|
||
operation[.](#2.sentence-1)
|
||
|
||
The representation of this type is intended to be able to hold any
|
||
value resulting from this conversion with no truncation error, although
|
||
floating-point durations can have round-off errors[.](#2.sentence-2)
|
||
|
||
â *end note*]
|
||
|
||
[ð](#lib:common_type,duration)
|
||
|
||
`template<class Clock, class Duration1, class Duration2>
|
||
struct common_type<chrono::time_point<Clock, Duration1>, chrono::time_point<Clock, Duration2>> {
|
||
using type = chrono::time_point<Clock, common_type_t<Duration1, Duration2>>;
|
||
};
|
||
`
|
||
|
||
[3](#3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L1194)
|
||
|
||
The common type of two time_point types is a time_point with the same
|
||
clock as the two types and the common type of their two durations[.](#3.sentence-1)
|