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_conceptstd::input_iterator_tag
difference_typestd::ptrdiff_t
value_typeVal

数据成员

成员定义
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++ 标准。

缺陷报告应用于出版时的行为正确行为
P2325R3C++20因为 C++20 迭代器必须为 default_initializable 而提供了默认构造函数与该要求一同移除