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 ✅