Files
cppdraft_translate/cppdraft/time/traits/specializations.md
2025-10-25 03:02:53 +03:00

60 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[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)