Namespaces
Variants

std:: datapar:: basic_simd, std:: datapar:: simd

From cppreference.net
ヘッダーで定義 <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::datapar::basic_simd 特殊化はデータ並列型です。デフォルトのABIタグは、コンパイル時に実装によって決定されます。
2) 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

メンバー定数

名前 説明
[static]
basic_simd の幅
(公開静的メンバ定数)

メンバー関数

basic_simd オブジェクトを構築する
(公開メンバ関数)
指定された要素にアクセスする
(公開メンバ関数)
要素ごとのインクリメントとデクリメント
(公開メンバ関数)
要素ごとの単項演算子
(公開メンバ関数)

非メンバー関数

要素単位の二項演算子
(関数)
要素単位の複合二項演算子
(関数)
要素単位の関係演算子
(関数)
simd_select の要素単位選択を特殊化
( 説明専用関数* )

推論ガイド

template < class R, class ... Ts >
basic_simd ( R && r, Ts... ) - > /* 詳細は後述 */ ;
(C++26 以降)

デデュクションガイドは、以下の場合にのみ存在します:

推論される型は datapar :: simd < ranges:: range_value_t < R > , ranges:: size ( r ) > と等価です。

注記

実装では、 basic_simd の有効な特殊化と適切な実装定義型との間の明示的な変換をサポートすることが推奨されます。これらの適切な型は、実装で利用可能な非標準ベクトル型です。

関連項目

要素型が bool のデータ並列型
(クラステンプレート)
幅を指定できる basic_simd_mask の便利なエイリアステンプレート
(エイリアステンプレート)
数値配列、配列マスク、配列スライス
(クラステンプレート)