Agreed. Let me point out that according to [istreambuf.iterator] p1:
"The default constructor istreambuf_iterator() and the constructor
istreambuf_iterator(0) both construct an end-of-stream iterator object
suitable for use as an end-of-range."
Given the exposed constructors this indicates that
istreambuf_iterator(basic_streambuf<charT,traits>* s) noexcept;
is well-defined, but I believe that the wording in
[istreambuf.iterator.cons] should be improved to make that
crystal-clear.
The issue
http://cplusplus.github.io/LWG/lwg-active.html#2366
doesn't cover the question of interest here, therefore please submit a new one.
- Daniel