640. 27.6.2.5.2 does not handle (unsigned) long long

Section: 31.7.6.3.2 [ostream.inserters.arithmetic] Status: CD1 Submitter: Daniel Krügler Opened: 2007-02-17 Last modified: 2016-01-28

Priority: Not Prioritized

View all other issues in [ostream.inserters.arithmetic].

View all issues with CD1 status.

Discussion:

The arithmetic inserters are described in 31.7.6.3.2 [ostream.inserters.arithmetic]. Although the section starts with a listing of the inserters including the new ones:

operator<<(long long val );
operator<<(unsigned long long val );

the text in paragraph 1, which describes the corresponding effects of the inserters, depending on the actual type of val, does not handle the types long long and unsigned long long.

[ Alisdair: In addition to the (unsigned) long long problem, that whole paragraph misses any reference to extended integral types supplied by the implementation - one of the additions by core a couple of working papers back. ]

Proposed resolution:

In 31.7.6.3.2 [ostream.inserters.arithmetic]/1 change the third sentence

When val is of type bool, long, unsigned long, long long, unsigned long long, double, long double, or const void*, the formatting conversion occurs as if it performed the following code fragment: