最終更新日時: 2024年03月10日 20時19分12秒 (JST)
yoh が更新

履歴 編集

class template
<linalg>

# std::linalg::scaled_accessor(C++26)

    namespace std::linalg {
      template<class ScalingFactor, class NestedAccessor>
      class scaled_accessor;
    }

## 概要

`scaled_accessor`は、多次元配列ビュー`mdspan`の全要素をスカラー倍した多次元配列ビューを表現するアクセサポリシークラスである。

`scaled_accessor`クラステンプレートは、要素スカラー倍操作`scaled`の戻り値型として利用される。 戻り値 `mdspad`の要素型は読み取り専用となる。

### 説明専用メンバ

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

- `scaling-factor` : `ScalingFactor`型のスケーリング係数
- `nested-accessor` : `NestedAccessor`型の入れ子アクセサポリシー

## 適格要件

- `element_type`が適格な型であること
- `is_copy_constructible_v<reference> == true`
- `is_reference_v<element_type> == false`
- `ScalingFactor`が`semiregular`のモデルであること
- `NestedAccessor`がアクセサポリシー要件を満たす

## メンバ関数

名前 | 説明 | 対応バージョン
--- | --- | ---
`(constructor)` | コンストラクタ | C++26
`(destructor)` | デストラクタ | C++26
`access` | 指定オフセット位置にある要素へアクセスする | C++26
`offset` | 指定オフセット位置のハンドルを取得する | C++26
`scaling_factor` | スケーリング係数`scaling-factor`を取得する | C++26
`nested_accessor` | 入れ子アクセサポリシー`nested-accessor`を取得する | C++26

## メンバ型

名前 | 説明 | 対応バージョン
--- | --- | ---
`element_type` | `add_const_t<decltype(declval<ScalingFactor>() * declval<NestedAccessor::element_type>())>` | C++26
`reference` | `remove_const_t<element_type>` | C++26
`data_handle_type` | `NestedAccessor::data_handle_type` | C++26
`offset_policy` | `scaled_accessor<ScalingFactor, NestedAccessor::offset_policy>` | C++26

## バージョン

### 言語

- C++26

### 処理系

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

## 関連項目

- `mdspan`
- `scaled`

## 参照

- P1673R13 A free function linear algebra interface based on the BLAS
- P1674R2: Evolving a Standard C++ Linear Algebra Library from the BLAS