Namespaces
Variants

C++ named requirements: AccessorPolicy (since C++23)

From ja.cppreference.net
C++ named requirements

AccessorPolicy は、与えられたデータハンドルとインデックスから要素にアクセスする方法を定義します。これは std:: mdspan のポリシーとして使用され、基盤となる1次元インデックスを使用した要素への参照アクセスを指定します。

目次

要件

型 A は、以下の条件を満たす場合に AccessorPolicy を満たす: copyable コンセプトをモデル化し、かつ以下が true であること:

また、以下の型と値が与えられた場合、下記の表に示す式は有効であり、示された意味を持ちます:

凡例

型 定義
A アクセサーポリシー型
OP オフセットポリシー型
値 定義
a (const修飾可能性のある) 型 A の値
p (const修飾可能性のある) 型 A::data_handle_type の値
i , j , n 型 std:: size_t の値

メンバー型

型 定義 要件
A::element_type 未規定
  • 抽象クラス型ではない完全なオブジェクト型
A::data_handle_type 未規定 [1]
  • copyable コンセプトをモデル化する
  • 以下の値がすべて true であること:
A::reference 未規定 [2]
A::offset_policy OP
  • AccessorPolicy の要件を満たすこと
  • std:: constructible_from < OP, const A & > が true であること
  • typename OP​ :: ​element_type と typename A​ :: ​element_type が同じ型であること
  1. ↑ element_type*である必要はありません。
  2. ↑ element_type&である必要はありません。

メンバー関数

式 戻り値の型 セマンティクス
a. access ( p, i ) typename A :: reference
a. offset ( p, i ) typename A :: offset_policy
:: data_handle_type
  • b を A :: offset_policy ( a ) とし、任意の整数 n に対して [ ​ 0 ​ , n ) が p と a のアクセス可能範囲(下記参照)であるとき、値 q は以下を満たす:
  • [ ​ 0 ​ , n - i ) が q と b のアクセス可能範囲である;かつ
  • 範囲 [ ​ 0 ​ , n - i ) 内のすべての j に対して、 b. access ( q, j ) が a. access ( p, i + j ) と同じ要素へのアクセスを提供する。

アクセス可能範囲

インデックスの範囲 [ ​ 0 ​ , N ) は、与えられたデータハンドルとアクセサの アクセシブル範囲 である。これは、範囲内の各インデックスに対して、 access メンバ関数が要素への有効な参照を生成する場合を指す。

標準ライブラリ

以下の標準ライブラリ型は AccessorPolicy 要件を満たします:

mdspanの要素へのインデックスアクセスのための型
(クラステンプレート)
mdspanの要素へのアライメントされたアクセスのための型
(クラステンプレート)
名前空間 std::linalg で定義
std::mdspan アクセスポリシーで、その参照が固定のスケーリング係数とネストされた std::mdspan アクセサの参照の積を表す
(クラステンプレート)
std::mdspan アクセスポリシーで、その参照がネストされた std::mdspan アクセサの参照の複素共役を表す
(クラステンプレート)