最終更新日時: 2025年08月31日 21時46分41秒 (JST)
Raclamusi が更新

履歴 編集

class template
<linalg>

# std::linalg::layout_transpose::mapping(C++26)

    namespace std::linalg {
      template<class Layout>
      class layout_transpose {
        template<class Extents>
        struct mapping;
      };
    }

## 概要

`layout_transpose::mapping`は、任意のレイアウトマッピングポリシーに対して行列転置操作を行ったレイアウトマッピングを表現するクラスである。

### 説明専用メンバ

説明専用メンバ型`nested-mapping-type`を`Layout::mapping<transpose-extents-t<Extents>>`とする。

`layout_transpose::mapping`クラステンプレートは、下記の説明専用メンバ変数を保持する。

- `nested-mapping_` : `nested-mapping-type`型の入れ子レイアウトマッピング
- `extents_` : `extents_type`型の多次元配列サイズ情報

## 適格要件

- `Extents`は`extents`の特殊化であること
- `Extents::rank() == 2`

## メンバ関数

### 構築・破棄

名前 | 説明 | 対応バージョン
--- | --- | ---
`(constructor)` | コンストラクタ | C++26
`(destructor)` | デストラクタ | C++26

### 観測

名前 | 説明 | 対応バージョン
--- | --- | ---
`extents` | 多次元配列のサイズ`extents_`を取得する | C++26
`required_span_size` | `nested-mapping_.required_span_size()` | C++26
`operator()` | 多次元配列インデクスから要素位置へ変換する | C++26
`nested_mapping` | 入れ子レイアウトマッピング`nested-mapping_`を取得する | C++26
`stride` | 指定次元のストライド幅を取得する | C++26
`is_unique` | `nested-mapping_.is_unique()` | C++26
`is_exhaustive` | `nested-mapping_.is_exhaustive()` | C++26
`is_strided` | `nested-mapping_.is_strided()` | C++26

## 静的メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`is_always_unique` | `nested-mapping-type::is_always_unique` | C++26
`is_always_exhaustive` | `nested-mapping-type::is_always_exhaustive` | C++26
`is_always_strided` | `nested-mapping-type::is_always_strided` | C++26

## メンバ型

名前 | 説明 | 対応バージョン
--- | --- | ---
`extents_type` | `Extents` | C++26
`index_type` | `Extents::index_type` | C++26
`size_type` | `Extents::size_type` | C++26
`rank_type` | `Extents::rank_type` | C++26
`layout_type` | `layout_transpose` | C++26

## 非メンバ（Hidden friends）関数

### 比較演算子

名前 | 説明 | 対応バージョン
--- | --- | ---
`operator==` | 等値比較 | C++26
`operator!=` | 非等値比較 (`==`により使用可能) | C++26

## バージョン

### 言語

- C++26

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??

## 参照

- P1673R13 A free function linear algebra interface based on the BLAS