std::ranges::basic_istream_view::iterator
来自cppreference.com
< cpp | ranges | basic istream view
struct /*iterator*/; | (仅用于阐述*) | |
ranges::basic_istream_view<Val, CharT, Traits>::iterator
是 ranges::basic_istream_view<Val, CharT, Traits> 的 begin()
返回的迭代器的类型。
iterator
是一种 input_iterator
,但不满足老式输入迭代器 (LegacyInputIterator) ,从而无法用于 C++20 前的算法。
嵌套类型
类型 | 定义 |
iterator_concept | std::input_iterator_tag |
difference_type | std::ptrdiff_t |
value_type | Val |
数据成员
成员 | 定义 |
ranges::basic_istream_view<Val, CharT, Traits> parent_ | 指向父视图的指针 (仅用于阐述的成员对象*) |
成员函数
std::ranges::basic_istream_view::iterator::iterator
/*iterator*/( const /*iterator*/& ) = delete; | (1) | (C++20 起) |
/*iterator*/( /*iterator*/&& ) = default; | (2) | (C++20 起) |
constexpr explicit /*iterator*/( basic_istream_view& parent ); | (3) | (C++20 起) |
1) 复制构造函数被弃置。迭代器不可复制。
2) 移动构造函数被预置。
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 起) |
2) 等价于 ++*this。
std::ranges::basic_istream_view::iterator::operator*
Val& operator*() const; | (C++20 起) | |
非成员函数
operator==(std::ranges::basic_istream_view::iterator, std::default_sentinel)
friend bool operator==( const /*iterator*/& x, std::default_sentinel_t ); | (C++20 起) | |
此函数对常规的无限定或有限定查找不可见,而只能在 std::ranges::basic_istream_view::iterator
为实参的关联类时由实参依赖查找找到。
缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
缺陷报告 | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
P2325R3 | C++20 | 因为 C++20 迭代器必须为 default_initializable 而提供了默认构造函数 | 与该要求一同移除 |