Skip to content

Latest commit

 

History

History
63 lines (48 loc) · 3.16 KB

view_interface.md

File metadata and controls

63 lines (48 loc) · 3.16 KB

view_interface

  • ranges[meta header]
  • std::ranges[meta namespace]
  • class template[meta id-type]
  • cpp20[meta cpp]
namespace std::ranges {
  template<class D>
    requires is_class_v<D> && same_as<D, remove_cv_t<D>>
  class view_interface { …… };
}
  • is_class_v[link /reference/type_traits/is_class.md]
  • remove_cv_t[link /reference/type_traits/remove_cv.md]

概要

view_interfaceは、viewを実装する際に便利なクラステンプレートである。

使用するときは、Dview_interfaceを公開継承した上で派生クラスDview_interfaceのテンプレート引数にする(CRTP)。

テンプレートパラメータ制約

Dview_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 [mark verified]
  • GCC: 10.1.0 [mark verified]
  • ICC: ?
  • Visual C++: 2019 Update 10 [mark verified]

関連項目

参照