§[facet.num.get.virtuals] doesn't say what it means for digit grouping to be consistent
Jonathan Wakely

Created on 2019-06-03.00:00:00, last changed 2019-07-23.15:26:26.


Date: 2019-07-23.15:26:26

[ 2019-07 Issue Prioritiztion ]

Priority to 4 after discussion on the reflector.

Date: 2019-06-03.00:00:00

[facet.num.get.virtuals] paragraph 4 says:

"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."

It's unclear what is considered consistent or not.

Obviously if the expected grouping is "1,234,567" then an input of "1,234,567" is consistent. Libstdc++, MSVC and Boost all consider "1234567" to be consistent with an expected grouping "1,234,567" (and it looks like libc++ is going to agree soon). That can be justified by saying that there are no discarded separators to examine, so no inconsistency. But what about "1234,567"? There is only one discarded separator here, and its position is consistent with the expected format.

The wording should clarify that if there are no separators at all, that is OK. If there are one or more separators then they must be at the expected positions, and there must not be any missing.

Date User Action Args
2019-07-23 15:26:26adminsetmessages: + msg10496
2019-06-03 00:00:00admincreate