361. num_get<>::do_get (..., void*&) checks grouping

Section: 25.4.2.2.2 [facet.num.put.virtuals] Status: NAD Submitter: Martin Sebor Opened: 2002-03-12 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 NAD status.

Discussion:

22.2.2.2.2, p12 specifies that thousands_sep is to be inserted only for integral types (issue 282 suggests that this should be done for all arithmetic types).

22.2.2.1.2, p12 requires that grouping be checked for all extractors including that for void*.

I don't think that's right. void* values should not be checked for grouping, should they? (Although if they should, then num_put needs to write them out, otherwise their extraction will fail.)

Proposed resolution:

Change the first sentence of 22.2.2.2.2, p12 from

Digit grouping is checked. That is, the positions of discarded separators is examined for consistency with use_facet<numpunct<charT> >(loc).grouping(). If they are not consistent then ios_base::failbit is assigned to err.

to

Except for conversions to void*, digit grouping is checked...

Rationale:

This would be a change: as it stands, the standard clearly specifies that grouping applies to void*. A survey of existing practice shows that most existing implementations do that, as they should.