lichray added a comment.

In https://reviews.llvm.org/D51268#1303217, @ldionne wrote:

> Please also update https://libcxx.llvm.org/cxx2a_status.html.


Done.



================
Comment at: include/istream:601
+    streamsize __n = __is.width();
+    if (__n <= 0)
+        __n = numeric_limits<streamsize>::max() / sizeof(_CharT) - 1;
----------------
ldionne wrote:
> Should this instead be `if (__n == 0)`? Can `width()` ever return a negative 
> number? cppreference says this about `streamsize`:
> 
> > Except in the constructors of `std::strstreambuf`, negative values of 
> > `std::streamsize` are never used.
> 
> I couldn't find a matching statement in the standard, however there's this 
> footnote in `30.5.2`:
> 
> > `streamsize` is used in most places where ISO C would use `size_t`. Most of 
> > the uses of `streamsize` could use `size_t`, except for the `strstreambuf` 
> > constructors, which require negative values. It should probably be the 
> > signed type corresponding to `size_t` (which is what Posix.2 calls 
> > `ssize_t`).
> 
> This does not clearly say that negative values are never used, but it does 
> suggest it. Maybe it's safer to still use `__n <= 0`.
> 
My interpretation of 27.5.3.2 is that you can retrieve the value you set 
through `width(streamsize)`.  And the wording here (unmodified) says "If 
`width()` is greater than zero, [...]," so the opposite should be `width() <= 
0`.


Repository:
  rCXX libc++

https://reviews.llvm.org/D51268



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to