命名空间
变体
操作

std::ranges::basic_istream_view::iterator

来自 cppreference.cn
 
 
范围库 (Ranges library)
范围适配器 (Range adaptors)
 
 
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++ 标准。

缺陷报告 应用于 发布时的行为 正确的行为
P2325R3 C++20 C++20 中提供了默认构造函数
迭代器必须是 default_initializable
与此一同删除
要求