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