std::experimental:: simd_cast, std::experimental:: static_simd_cast
|
定義済みヘッダー
<experimental/simd>
|
||
|
template
<
class
V,
class
T,
class
Abi
>
/*see below*/ simd_cast ( const simd < T, Abi > & v ) noexcept ; |
(1) | (parallelism TS v2) |
|
template
<
class
V,
class
T,
class
Abi
>
/*see below*/ static_simd_cast ( const simd < T, Abi > & v ) noexcept ; |
(2) | (parallelism TS v2) |
simdオブジェクトを別のsimdオブジェクトにキャストします。VがTの場合、 simd < T, Abi > を返します。それ以外の場合、Vがスカラ型であれば、 simd < V, simd_abi :: fixed_size < simd < T, Abi > :: size ( ) >> を返します。それ以外の場合、Vはsimd型でなければならず、関数はVを返します。
- 入力要素の全ての可能な値が出力要素で表現可能であること
- is_simd_v < V > がfalseであるか、または V :: size ( ) が simd < T, Abi > :: size ( ) と等しいこと
目次 |
パラメータ
| v | - | 入力SIMDオブジェクト |
戻り値
i番目の要素が static_cast < To > ( v [ i ] ) で初期化されたsimdオブジェクト。ここでToは指定された出力要素型です。
注記
TS仕様には simd_cast および static_simd_cast の simd_mask に対するオーバーロードが欠如しています。libstdc++実装では、不足しているオーバーロードを std :: experimental :: __proposed 名前空間で提供しています。既に使用している場合
namespace stdx = std::experimental;
ショートカットとして、ご利用いただくと便利かもしれません
namespace stdx { using namespace std::experimental; using namespace std::experimental::__proposed; }
代わりに、libstdc++は __cvt ( ) メンバー関数を simd_mask 内に実装しており、これによりマスクの暗黙的変換が可能となります。参照: https://github.com/VcDevel/std-simd/issues/41
例
|
このセクションは不完全です
理由: 例がありません |