This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of WP status.
Section: 29.5 [time.duration] Status: WP Submitter: Johel Ernesto Guerrero Peña Opened: 2018-06-22 Last modified: 2021-10-14
Priority: 3
View all other issues in [time.duration].
View all issues with WP status.
Discussion:
[time.duration]/4 states:
Members of duration shall not throw exceptions other than those thrown by the indicated operations on their representations.
Where representation is defined in the non-normative, brief description at [time.duration]/1:
[…] A duration has a representation which holds a count of ticks and a tick period. […]
[time.duration.cons]/2 doesn't indicate the operation undergone by its representation, merely stating a postcondition in [time.duration.cons]/3:
Effects: Constructs an object of type duration.
Postconditions: count() == static_cast<rep>(r).
I suggest this reformulation that follows the format of [time.duration.cons]/5.
Effects: Constructs an object of type duration, constructing rep_ from r.
Now it is clear why the constructor would throw.
Previous resolution [SUPERSEDED]:
This wording is relative to N4750.
Change 29.5.2 [time.duration.cons] as indicated:
template<class Rep2> constexpr explicit duration(const Rep2& r);-1- Remarks: This constructor shall not participate in overload resolution unless […]
-2- Effects: Constructs an object of type duration, constructing rep_ from r. -3- Postconditions: count() == static_cast<rep>(r).
[2018-06-27 after reflector discussion]
Priority set to 3. Improved wording as result of that discussion.
Previous resolution [SUPERSEDED]:
This wording is relative to N4750.
Change 29.5.2 [time.duration.cons] as indicated:
template<class Rep2> constexpr explicit duration(const Rep2& r);-1- Remarks: This constructor shall not participate in overload resolution unless […]
-2- Effects:Constructs an object of type durationInitializes rep_ with r.-3- Postconditions: count() == static_cast<rep>(r).
[2020-05-02; Daniel resyncs wording with recent working draft]
[2021-09-20; Reflector poll]
Set status to Tentatively Ready after seven votes in favour during reflector poll.
[2021-10-14 Approved at October 2021 virtual plenary. Status changed: Voting → WP.]
Proposed resolution:
This wording is relative to N4861.
Change 29.5.2 [time.duration.cons] as indicated:
template<class Rep2> constexpr explicit duration(const Rep2& r);-1- Constraints: is_convertible_v<const Rep2&, rep> is true and
(1.1) — treat_as_floating_point_v<rep> is true or
(1.2) — treat_as_floating_point_v<Rep2> is false.
[Example: […] end example]
-?- Effects: Initializes rep_ with r.-2- Postconditions: count() == static_cast<rep>(r).