命名空间
变体
操作

std::ranges::basic_istream_view::iterator

来自 cppreference.cn
 
 
范围库
范围适配器
 
 
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
已移除, साथ
该要求