最終更新日時: 2025年08月19日 20時49分01秒 (JST)
Raclamusi が更新

履歴 編集

named requirement
<mdspan>

# ::AccessorPolicy(C++23)

## 概要

AccessorPolicyは、多次元配列ビュー`mdspan`を介した要素アクセス動作を定義するクラスが満たすべき要件である。

## 要件

AccessorPolicyを満たす型`A`は

- `A`は`copyable`のモデルであり、かつ
- `is_nothrow_move_constructible_v<A>`は`true`であり、かつ
- `is_nothrow_move_assignable_v<A>`は`true`であり、かつ
- `is_nothrow_swappable_v<A>`は`true`であること

型`A`は下記のメンバ型を持つこと

- `A::element_type` : 要素型
- `A::data_handle_type` : メモリブロックのポインタ型
- `A::reference` : 要素への参照型
- `A::offset_policy` : `offset`適用後のアクセサポリシー

説明用の変数`a`を`(const) A`の値、`p`を`(const) A::data_handle_type`の値、`i`を`size_t`の値としたとき、下記の式が妥当であること

- `a.access(p, i)` : `A::reference`を返す
- `a.offset(p, i)` : `A::offset_policy::data_handle_type`を返す

## `AccessorPolicy`に該当する型

- `<mdspan>`ヘッダ
  - C++23 `default_accessor`
  - C++26 `aligned_accessor`
- `<linalg>`ヘッダ
  - C++26 `scaled_accessor`
  - C++26 `conjugated_accessor`

## バージョン

### 言語

- C++23

## 関連項目

- `mdspan`

## 参照

- P0009R18 MDSPAN
- P2604R0 `mdspan`: rename `pointer` and `contiguous`