25 Iterators library [iterators]

25.6 Stream iterators [stream.iterators]

25.6.2 Class template istream_­iterator [istream.iterator]

25.6.2.2 Constructors and destructor [istream.iterator.cons]

constexpr istream_iterator(); constexpr istream_iterator(default_sentinel_t);
Effects: Constructs the end-of-stream iterator, value-initializing value.
Postconditions: in_­stream == nullptr is true.
Remarks: If the initializer T() in the declaration auto x = T(); is a constant initializer ([expr.const]), then these constructors are constexpr constructors.
istream_iterator(istream_type& s);
Effects: Initializes in_­stream with addressof(s), value-initializes value, and then calls operator++().
constexpr istream_iterator(const istream_iterator& x) noexcept(see below);
Effects: Initializes in_­stream with x.in_­stream and initializes value with x.value.
Remarks: An invocation of this constructor may be used in a core constant expression if and only if the initialization of value from x.value is a constant subexpression ([defns.const.subexpr]).
The exception specification is equivalent to is_­nothrow_­copy_­constructible_­v<T>.
~istream_iterator() = default;
Remarks: If is_­trivially_­destructible_­v<T> is true, then this destructor is trivial.