# std::ranges::basic_istream_view::iterator

< cpp‎ | ranges‎ | basic istream view

struct /*iterator*/; |  | (C++20 起)

`basic_istream_view::begin` 的返回类型。此处展示的名字 /*iterator*/ 仅用于阐释。

/*iterator*/ 为 `input_iterator` ，但不满足老式输入迭代器 (LegacyInputIterator) ，从而无法用于 C++20 前的算法。

### 成员类型

成员类型 | 定义
`iterator_concept`(C++20) | std::input_iterator_tag
`difference_type`(C++20) | std::ptrdiff_t
`value_type`(C++20) | `Val`

### 成员函数

(构造函数) (C++20) | 构造迭代器 (公开成员函数)
operator= (C++20) | 复制赋值运算符被删除； /*iterator*/ 为仅移动 (公开成员函数)
operator++ (C++20) | 令迭代器前进 (公开成员函数)
operator* (C++20) | 返回当前元素 (公开成员函数)

## std::ranges::basic_istream_view::iterator::iterator

constexpr explicit /*iterator*/( basic_istream_view& parent ); | (1) | (C++20 起)
/*iterator*/( const /*iterator*/& ) = delete; | (2) | (C++20 起)
/*iterator*/( /*iterator*/&& ) = default; | (3) | (C++20 起)

1) 从亲 `basic_istream_view` 构造迭代器。
2) 复制构造函数被删除。迭代器不可复制。
3) 移动构造函数被默认化。迭代器可移动。

## std::ranges::basic_istream_view::iterator::operator=

/*iterator*/& operator=( const /*iterator*/& ) = delete; | (1) | (C++20 起)
/*iterator*/& operator=( /*iterator*/&& ) = default; | (2) | (C++20 起)

1) 复制赋值运算符被删除。迭代器不可复制。
2) 移动赋值运算符被默认化。迭代器可移动。

## std::ranges::basic_istream_view::iterator::operator++

/*iterator*/& operator++(); | (1) | (C++20 起)
void operator++(int); | (2) | (C++20 起)

从底层流读取值并将它存储于亲 `basic_istream_view` 。

### 返回值

1) `*this`
2) （无）

## std::ranges::basic_istream_view::iterator::operator*

Val& operator*() const; |  | (C++20 起)

返回到存储值的引用。

### 非成员函数

operator== (C++20) | 与 std::default_sentinel_t 比较 (公开成员函数)

## operator==(std::ranges::basic_istream_view::iterator, std::default_sentinel)

friend bool operator==( const /*iterator*/& x, std::default_sentinel_t ); |  | (C++20 起)

与 `std::default_sentinel_t` 比较。

若 `*this` 无亲 `basic_istream_view` 或若底层流发生错误则返回 true 。

此函数对通常无限定或有限定查找不可见，而只能在 `std::ranges::basic_istream_view::iterator` 为参数的关联类时由实参依赖查找找到。

### 缺陷报告

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

DR | 应用于 | 出版时的行为 | 正确行为
--- | --- | --- | ---
P2325R3 | C++20 | 因为 C++20 迭代器必须为 `default_initializable` 提供了默认构造函数 | 与该要求一同移除