238. Contradictory results of stringbuf initialization.

Section: 30.8.2.1 [stringbuf.cons] Status: CD1 Submitter: Dietmar Kühl Opened: 2000-05-11 Last modified: 2016-02-10

Priority: Not Prioritized

View other active issues in [stringbuf.cons].

View all other issues in [stringbuf.cons].

View all issues with CD1 status.

Discussion:

In 27.7.1.1 paragraph 4 the results of calling the constructor of 'basic_stringbuf' are said to be str() == str. This is fine that far but consider this code:

  std::basic_stringbuf<char> sbuf("hello, world", std::ios_base::openmode(0));
  std::cout << "'" << sbuf.str() << "'\n";

Paragraph 3 of 27.7.1.1 basically says that in this case neither the output sequence nor the input sequence is initialized and paragraph 2 of 27.7.1.2 basically says that str() either returns the input or the output sequence. None of them is initialized, ie. both are empty, in which case the return from str() is defined to be basic_string<cT>().

However, probably only test cases in some testsuites will detect this "problem"...

Proposed resolution:

Remove 27.7.1.1 paragraph 4.

Rationale:

We could fix 27.7.1.1 paragraph 4, but there would be no point. If we fixed it, it would say just the same thing as text that's already in the standard.