282. What types does numpunct grouping refer to?

Section: 25.4.2.2.2 [facet.num.put.virtuals] Status: CD1 Submitter: Howard Hinnant Opened: 2000-12-05 Last modified: 2016-02-10

Priority: Not Prioritized

View other active issues in [facet.num.put.virtuals].

View all other issues in [facet.num.put.virtuals].

View all issues with CD1 status.

Discussion:

Paragraph 16 mistakenly singles out integral types for inserting thousands_sep() characters. This conflicts with the syntax for floating point numbers described under 22.2.3.1/2.

Proposed resolution:

Change paragraph 16 from:

For integral types, punct.thousands_sep() characters are inserted into the sequence as determined by the value returned by punct.do_grouping() using the method described in 25.4.3.1.2 [facet.numpunct.virtuals].

To:

For arithmetic types, punct.thousands_sep() characters are inserted into the sequence as determined by the value returned by punct.do_grouping() using the method described in 25.4.3.1.2 [facet.numpunct.virtuals].

[ Copenhagen: Opinions were divided about whether this is actually an inconsistency, but at best it seems to have been unintentional. This is only an issue for floating-point output: The standard is unambiguous that implementations must parse thousands_sep characters when performing floating-point. The standard is also unambiguous that this requirement does not apply to the "C" locale. ]

[ A survey of existing practice is needed; it is believed that some implementations do insert thousands_sep characters for floating-point output and others fail to insert thousands_sep characters for floating-point input even though this is unambiguously required by the standard. ]

[Post-Curaçao: the above proposed resolution is the consensus of Howard, Bill, Pete, Benjamin, Nathan, Dietmar, Boris, and Martin.]