名前空間
変種
操作

std::ranges::basic_istream_view::iterator

From cppreference.com
 
 
Rangesライブラリ
Rangeアダプタ
 
 
struct /*iterator*/;
(説明用*)

ranges::basic_istream_view<Val, CharT, Traits>::iterator は、ranges::basic_istream_view<Val, CharT, Traits>begin() によって返されるイテレータの型です。

iteratorinput_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) parent_std::addressof(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である必要があります。
と共に削除された
要件
English 日本語 中文(简体) 中文(繁體)