namespace std::ranges {
template<class D>
requires is_class_v<D> && same_as<D, remove_cv_t<D>>
class view_interface { …… };
}
概要
view_interface
は、view
を実装する際に便利なクラステンプレートである。
使用するときは、D
でview_interface
を公開継承した上で派生クラスD
をview_interface
のテンプレート引数にする(CRTP)。
テンプレートパラメータ制約
D
はview_interface<D>
の派生クラスであること。
メンバ関数
これらのメンバ関数は、std::ranges
以下のカスタマイゼーションポイントオブジェクトを使って実装されており、テンプレート引数D
として渡されたRange型に対して該当する呼び出しが可能な場合のみオーバーロード解決に参加する。
名前 | 説明 | 対応バージョン |
---|---|---|
empty |
Rangeが空かどうかを判定する | C++20 |
operator bool |
Rangeが空でないかどうかを判定する | C++20 |
data |
Rangeの先頭へのポインタを取得する | C++20 |
size |
要素数を取得する | C++20 |
front |
先頭要素への参照を取得する | C++20 |
back |
末尾要素への参照を取得する | C++20 |
operator[] |
要素へアクセスする | C++20 |
cbegin |
定数イテレータを取得する | C++23 |
cend |
定数イテレータ(番兵)を取得する | C++23 |
derived |
D へダウンキャストする (説明専用) |
C++20 |
バージョン
言語
- C++20
処理系
- Clang: 13.0.0 ✅
- GCC: 10.1.0 ✅
- ICC: ?
- Visual C++: 2019 Update 10 ✅