59. Ambiguity in specification of gbump

Section: 30.6.3.3.2 [streambuf.get.area] Status: TC1 Submitter: Matt Austern Opened: 1998-07-28 Last modified: 2016-02-10

Priority: Not Prioritized

View all issues with TC1 status.

Discussion:

27.5.2.3.1 says that basic_streambuf::gbump() "Advances the next pointer for the input sequence by n."

The straightforward interpretation is that it is just gptr() += n. An alternative interpretation, though, is that it behaves as if it calls sbumpc n times. (The issue, of course, is whether it might ever call underflow.) There is a similar ambiguity in the case of pbump.

(The "classic" AT&T implementation used the former interpretation.)

Proposed resolution:

Change 30.6.3.3.2 [streambuf.get.area] paragraph 4 gbump effects from:

Effects: Advances the next pointer for the input sequence by n.

to:

Effects: Adds n to the next pointer for the input sequence.

Make the same change to 30.6.3.3.3 [streambuf.put.area] paragraph 4 pbump effects.