std::basic_simd、std::simd
From cppreference.com
| ヘッダー <simd> で定義 |
||
| template< class T, class Abi = /*native-abi*/<T> > class basic_simd; |
(1) | (C++26以降) |
| template< class T, /*simd-size-type*/ N = /*simd-size-v*/<T, /*native-abi*/<T>> > using simd = basic_simd<T, /*deduce-abi-t*/<T, N>>; |
(2) | (C++26以降) |
1)
std::basic_simd の特殊化は、データ並列型です。デフォルトのABIタグは、コンパイル時に実装によって決定されます。2)
std::simd は、ユーザーが幅を特定のサイズに指定できるエイリアステンプレートです。デフォルトの幅は、コンパイル時に実装によって決定されます。basic_simd のすべての特殊化は、完全な型です。特殊化は、
-
Tが vectorizable type であり、[1,64]の範囲に値Mが存在し、Abiが deduce-abi-t<T, M> である場合に、有効化されます。 - それ以外の場合、
Tが vectorizable type でない場合は、無効化されます。 - それ以外の場合、そのような特殊化が有効化されるかどうかは実装定義です。
basic_simd<T, Abi> が無効化されている場合、その特殊化はすべての削除されたデフォルトコンストラクタ、デストラクタ、コピーコンストラクタ、およびコピー代入演算子を持ちます。さらに、以下のメンバ型のみが存在します。
basic_simd<T, Abi> が有効化されている場合、basic_simd<T, Abi> は TriviallyCopyable です。
目次 |
[edit] テンプレートパラメータ
| T | - | 要素型。vectorizable type。 |
| Abi | - | 幅とストレージを決定するために使用される タグ型。 |
| N | - | データ並列型の幅。要素数。 |
[edit] メンバ型
| 型 | 定義 |
value_type
|
T
|
mask_type
|
std::basic_simd_mask<sizeof(T), Abi> |
abi_type
|
Abi
|
[edit] メンバ定数
| 名前 | 説明 |
| constexpr std::integral_constant< simd-size-type, simd-size-v<T, Abi>> size[static] |
basic_simd の幅。(公開静的メンバ定数) |
[edit] メンバ関数
basic_simd オブジェクトを構築します。(public member function) | |
| 指定された要素にアクセスします。 (public member function) | |
| 要素ごとのインクリメントおよびデクリメント。 (public member function) | |
| 要素ごとの単項演算子。 (public member function) |
[edit] 非メンバ関数
| 要素ごとの二項演算子。 (function) | |
| 要素ごとの複合二項演算子。 (function) | |
| 要素ごとの比較演算子。 (function) | |
| (C++26) |
simd_select のための要素ごとの選択を特殊化します。(exposition-only function*) |
[edit] 推論ガイド
| template< class R, class... Ts > basic_simd( R&& r, Ts... ) -> /* 以下参照 */; |
(C++26以降) | |
推論ガイドは、以下の場合にのみ存在します。
-
Rがcontiguous_rangeおよびsized_rangeをモデル化し、かつ - ranges::size(r) が 定数式である。
推論される型は、std::simd<ranges::range_value_t<R>, ranges::size(r)> と同等です。
[edit] 注釈
実装は、有効化された basic_simd の特殊化と、適切な実装定義型との間の明示的な変換をサポートすることが推奨されます。これらの適切な型は、実装で利用可能な非標準のベクトル型です。
[edit] 例
| このセクションは未完成です 理由: 例がありません |
[edit] 関連項目
| (C++26) |
要素型が bool のデータ並列型 (クラステンプレート) |
| (C++26) |
basic_simd_mask のための、幅を指定できる便利なエイリアステンプレート(エイリアステンプレート) |
| 数値配列、配列マスク、および配列スライス (クラステンプレート) |