名前空間
変種
操作

C++ 名前付き要件: AccessorPolicy (C++23 以降)

From cppreference.com
 
 
C++ 名前付き要件
 

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

目次

[編集] 要件

AAccessorPolicy を満たすのは、それが copyable をモデル化し、かつ以下が true である場合です。

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

[編集] 凡例

定義
A アクセサポリシー型
OP オフセットポリシー型
定義
a A (const 修飾子付きの場合あり) の値
p A::data_handle_type (const 修飾子付きの場合あり) の値
i, j, n std::size_t の値

[編集] メンバ型

名前 要件
A::element_type (未指定)
  • 抽象クラス型ではない完全なオブジェクト型
A::data_handle_type (未指定) ただし、型は element_type* である必要はありません。
  • copyable をモデル化する
  • 以下の条件はすべて true です。
A::reference (未指定) ただし、型は element_type& である必要はありません。
A::offset_policy OP
  • AccessorPolicy の要件を満たす
  • std::constructible_from<OP, const A&>true です。
  • typename OP​::​element_typetypename A​::​element_type は同じ型です。

[編集] メンバ関数

Expression 戻り値の型 セマンティクス
a.access(p, i) typename A::reference
a.offset(p, i) typename A::offset_policy::data_handle_type
  • q という値は、bA::offset_policy(a) であり、[0n)pa のアクセス可能な範囲[注 1]である任意の整数 n に対して、以下の条件を満たします。
  • [0n - i)qb のアクセス可能な範囲です。そして
  • b.access(q, j) は、範囲 [0n - i) 内のすべての j に対して、a.access(p, i + j) と同じ要素へのアクセスを提供します。
  1. インデックスの範囲 [0N) は、指定されたデータハンドルとアクセサの「アクセス可能な範囲」です。もし範囲内の各インデックスについて、access メンバ関数が要素への有効な参照を生成する場合です。

[編集] 標準ライブラリ

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

mdspan の要素へのインデックス付きアクセスのための型
(class template) [編集]
mdspan の要素へのアラインメントされたアクセスのための型
(class template) [編集]
名前空間 std::linalg で定義
参照が、固定されたスケーリング因子とネストされた std::mdspan アクセッサの参照との積を表す std::mdspan アクセッサポリシー
(クラステンプレート) [編集]
参照が、ネストされた std::mdspan アクセッサの参照の複素共役を表す std::mdspan アクセッサポリシー
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)