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

2.1 KiB
Raw Blame History

[time.traits.specializations]

30 Time library [time]

30.4.3 Specializations of common_type [time.traits.specializations]

🔗

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

#

The period of the duration indicated by this specialization ofcommon_type is the greatest common divisor of Period1 andPeriod2.

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

— end 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.

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.

— end note]

🔗

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

#

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.