This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of Tentatively Ready status.
4274. Thechrono::hh_mm_ss
constructor is ill-formed for unsigned durations
Section: 30.9.2 [time.hms.members] Status: Tentatively Ready Submitter: Michael Welsh Duggan Opened: 2025-06-04 Last modified: 2025-06-13
Priority: Not Prioritized
View all issues with Tentatively Ready status.
Discussion:
In 30.9.2 [time.hms.members], paragraph 3, the current wording for the constructor of hh_mm_ss
expresses some of its requirements in terms of abs(d)
, which is assumed to be chrono::abs(chrono::duration)
. chrono::abs
is not defined, however, for durations with an unsigned representation. I believe that not being able to create hh_mm_ss
objects from unsigned durations is unintentional.
is_constructible_v<hh_mm_ss<ud>, ud>
is required to be true by the standard for any duration, so making it actually work makes a lot of sense.
[2025-06-13; Reflector poll]
Set status to Tentatively Ready after five votes in favour during reflector poll.
Proposed resolution:
This wording is relative to N5008.
Modify 30.9.2 [time.hms.members] as indicated:
constexpr explicit hh_mm_ss(Duration d);-3- Effects: Constructs an object of type
hh_mm_ss
which represents theDuration d
with precisionprecision
.
(3.1) — Initializes
is_neg
withd < Duration::zero()
. LetABS_D
represent-d
ifis_neg
istrue
andd
otherwise.(3.2) — Initializes
h
withduration_cast<chrono::hours>( abs(d) ABS_D)
.(3.3) — Initializes
m
withduration_cast<chrono::minutes>( abs(d) ABS_D - hours())
.(3.4) — Initializes
s
withduration_cast<chrono::seconds>( abs(d) ABS_D - hours() - minutes())
.(3.5) — If
treat_as_floating_point_v<precision::rep>
istrue
, initializesss
withabs(d) ABS_D - hours() - minutes() - seconds()
. Otherwise, initializesss
withduration_cast<precision>( abs(d) ABS_D - hours() - minutes() - seconds())
.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4