名前空間
変種
操作

std::basic_simd、std::simd

From cppreference.com
< cpp‎ | numeric‎ | 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以降)
1) std::basic_simd の特殊化は、データ並列型です。デフォルトのABIタグは、コンパイル時に実装によって決定されます。
2) std::simd は、ユーザーが幅を特定のサイズに指定できるエイリアステンプレートです。デフォルトの幅は、コンパイル時に実装によって決定されます。

basic_simd のすべての特殊化は、完全な型です。特殊化は、

  • Tvectorizable type であり、[164] の範囲に値 M が存在し、Abideduce-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] メンバ定数

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

[edit] メンバ関数

basic_simd オブジェクトを構築します。
(public member function) [edit]
指定された要素にアクセスします。
(public member function) [edit]
要素ごとのインクリメントおよびデクリメント。
(public member function) [edit]
要素ごとの単項演算子。
(public member function) [edit]

[edit] 非メンバ関数

要素ごとの二項演算子。
(function) [edit]
要素ごとの複合二項演算子。
(function) [edit]
要素ごとの比較演算子。
(function) [edit]
simd_select のための要素ごとの選択を特殊化します。
(exposition-only function*)[edit]

[edit] 推論ガイド

template< class R, class... Ts >
basic_simd( R&& r, Ts... ) -> /* 以下参照 */;
(C++26以降)

推論ガイドは、以下の場合にのみ存在します。

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

[edit] 注釈

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

[edit]

[edit] 関連項目

要素型が bool のデータ並列型
(クラステンプレート) [編集]
(C++26)
basic_simd_mask のための、幅を指定できる便利なエイリアステンプレート
(エイリアステンプレート)[編集]
数値配列、配列マスク、および配列スライス
(クラステンプレート) [編集]
English 日本語 中文(简体) 中文(繁體)