# std::istream_iterator<T,CharT,Traits,Distance>::istream_iterator

< cpp‎ | iterator‎ | istream iterator

| (1) |
istream_iterator(); |  | (C++11 前)
constexpr istream_iterator(); |  | (C++11 起)
constexpr istream_iterator( std::default_sentinel_t ); | (2) | (C++20 起)
istream_iterator( istream_type& stream ); | (3) |
| (4) |
istream_iterator( const istream_iterator& other ); |  | (C++11 前)
istream_iterator( const istream_iterator& other ) = default; |  | (C++11 起)

1) 构造流尾迭代器，值初始化存储的值。若定义 auto x = T(); 中的初始化器是常量初始化器，则此构造函数为 constexpr (C++11 起)。
2) 初始化迭代器并于数据成员中存储 `stream` 的地址。再从输入流进行首次读取以初始化缓冲数据成员。
3) 构造 `other` 的副本。若 std::is_trivially_copy_constructible<T>::value 为 `true` ，则此构造函数为平凡复制构造函数。 (C++11 起)

### 参数

stream | - | 用于初始化 istream_iterator 的流
other | - | 同类型的另一 istream_iterator

### 示例

    #include <iostream>
    #include <iterator>
    #include <algorithm>
    #include <sstream>
    int main()
    {
        std::istringstream stream("1 2 3 4 5");
        std::copy(
            std::istream_iterator<int>(stream),
            std::istream_iterator<int>(),
            std::ostream_iterator<int>(std::cout, " ")
        );
    }

输出：

    1 2 3 4 5

### 缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR | 应用于 | 出版时的行为 | 正确行为
--- | --- | --- | ---
P0738R2 | C++98 | 首次读取可以延迟到首次解引用 | 首次读取在构造函数中进行