最終更新日時: 2024年12月20日 17時46分04秒 (JST)
yoh が更新

履歴 編集

named requirement
<mdspan>

# ::LayoutMappingPolicy(C++23)

## 概要

LayoutMappingPolicyは、多次元配列ビュー`mdspan`において多次元インデクスから参照先メモリブロック位置へと変換するレイアウトマッピングを定めるクラスが満たすべき要件である。

LayoutMappingPolicyを満たすユーザ定義`layout_custom`ポリシークラスは、下記の構造で定義される。

    // レイアウトマッピングポリシー
    struct layout_custom {
      // レイアウトマッピング
      template<class Extents>
      class mapping {
      public:
        using layout_type = layout_custom;
        using extent_type = Extents;
        // ...
      };
    };

## 要件

LayoutMappingPolicyを満たす型`MP`は

- `extents`の特殊化`E`に対して`MP::mapping<E>`が有効であり、かつ
- その型`X`がレイアウトマッピング要件を満たし、かつ
- メンバ型`X::layout_type`が型`MP`を表しており、かつ
- メンバ型`X::extent_type`が型`E`を表すこと。

## `LayoutMappingPolicy`に該当する型

- `<mdspan>`ヘッダ
  - C++23 `layout_left`
  - C++23 `layout_right`
  - C++23 `layout_stride`
  - C++26 `layout_left_padded<S>`
  - C++26 `layout_right_padded<S>`
- `<linalg>`ヘッダ
  - C++26 `layout_blas_packed<T,SO>`

## バージョン

### 言語

- C++23

## 関連項目

- `mdspan`
- `extents`
- LayoutMapping

## 参照

- P0009R18 MDSPAN