duration
streaming precondition should be a SFINAE conditionSection: 30.5.11 [time.duration.io] Status: Resolved Submitter: Johel Ernesto Guerrero Peña Opened: 2018-06-23 Last modified: 2020-11-09
Priority: 2
View all other issues in [time.duration.io].
View all issues with Resolved status.
Discussion:
30.5.11 [time.duration.io]/1 states:
template<class charT, class traits, class Rep, class Period> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const duration<Rep, Period>& d);Requires:
Rep
is an integral type whose integer conversion rank (6.8.6 [conv.rank]) is greater than or equal to that ofshort
, or a floating point type.charT
ischar
orwchar_t
.
I think the intention was to make this a compile-time error, since all the information to make it so is available at compile-time. But the wording doesn't suggest that.
[2018-06-29; Daniel comments]
The wording will be significantly simplified by the application of the new Library element Constraints: introduced by P0788R3 and available with the post-Rapperswil working draft.
[2018-07-20 Priority set to 2 after reflector discussion. NAD and P0 were also mentioned.]
[2018-08-23 Batavia Issues processing]
Marshall to talk to Howard about his intent. Status to Open
Previous resolution [SUPERSEDED]:This wording is relative to N4750.
Change 30.5.11 [time.duration.io] as indicated:
[Drafting note: The suggested wording changes include the insertion of two bullets into the existing running text to improve clarification of the logic arm of the "unless"].
template<class charT, class traits, class Rep, class Period> basic_ostream<charT, traits>& operator<<(basic_ostream<charT, traits>& os, const duration<Rep, Period>& d);-1-
RequiresRemarks: This function shall not participate in overload resolution unless:
Rep
is an integral type whose integer conversion rank (6.8.6 [conv.rank]) is greater than or equal to that ofshort
, or a floating point type., and
charT
ischar
orwchar_t
[…]
[2020-02-13, Prague]
Will be resolved by LWG 3317.
[2020-11-09 Resolved for C++20. Status changed: Tentatively Resolved → Resolved.]
Proposed resolution: