std::ranges::basic_istream_view::iterator
From 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++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| P2325R3 | C++20 | デフォルトコンストラクタがC++20として提供されました。 イテレータは default_initializableである必要があります。 |
と共に削除された 要件 |