命名空间
变体
操作

std::ranges::basic_istream_view::iterator

来自 cppreference.com
 
 
范围库
范围适配器
 
 
struct /*iterator*/;
(仅供说明*)

ranges::basic_istream_view<Val, CharT, Traits>::iteratorranges::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) 移动构造函数已默认。
3) 使用 std::addressof(parent) 初始化 parent_

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)
1) 等效于 *parent_ ->stream_ >> parent_ ->value_.
2) 等效于 ++*this.

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

Val& operator*() const;
(自 C++20)

返回 parent_ ->value_.

[编辑] 非成员函数

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

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

返回 !*parent_ ->stream_.

此函数对于普通的 非限定限定查找 是不可见的,只能通过 参数依赖查找 找到,当 std::ranges::basic_istream_view::iterator 是参数的关联类时。

[编辑] 缺陷报告

以下行为更改的缺陷报告已追溯应用于以前发布的 C++ 标准。

DR 应用于 发布的行为 正确行为
P2325R3 C++20 默认构造函数被提供为 C++20
迭代器必须是 default_initializable

要求