名前空間
変種
操作

std::experimental::simd_abi::deduce

From cppreference.com
< cpp‎ | experimental‎ | simd
 
 
 
 
 
ヘッダー <experimental/simd> で定義
template< class T, std::size_t N, class ...Abis >
struct deduce;
(parallelism TS v2)

deduce<T, N, Abis...>::type は、以下の条件がすべて満たされる場合にのみ存在します。

  • T がベクトル化可能な型であること。
  • simd_abi::fixed_size<N> がサポートされていること。
  • Abis... のすべての型が ABI タグであること。

DA を、存在する場合の deduce<T, N, Abis...>::type とすると、

  • simd_size_v<T, DA> == N,
  • simd<T, DA> がデフォルト構築可能であること(すなわち、サポートされていること)。
  • DA は、N == 1 の場合は simd_abi::scalar であり、それ以外の場合は実装定義です。

目次

[編集] メンバ型

名前 定義
type 指定された要素型 T およびサイズ N に適した ABI タグ型。

[編集] ヘルパー型

template< class T, std::size_t N, class ...Abis >
using deduce_t = typename deduce<T, N, Abis...>::type;
(parallelism TS v2)

[編集] 注記

simd_abi::deduce は SFINAE フレンドリーです。

この機能を通じて推論される ABI タグは、実装品質(Quality-of-Implementation)の機能です。実装は Abis... に基づいて選択できますが、Abis... 引数を無視することもできます。単純な実装では、無条件に fixed_size<N> を返すことがあります。最適化された実装では、ほとんどの入力に対して実装定義の拡張 ABI タグを返すことがあります。したがって、特定の要素数に対する ABI タグが必要な場合は、ABI の安定性が懸念される場合は fixed_size を使用し、それ以外の場合は deduce_t を優先してください。

[編集]

[編集] 関連項目

(parallelism TS v2)
単一の要素を格納するためのタグ型
(typedef) [編集]
(parallelism TS v2)
指定された数の要素を格納するためのタグ型
(エイリアステンプレート)[編集]
(parallelism TS v2)
ABI互換性を保証するタグ型
(エイリアステンプレート)[編集]
(parallelism TS v2)
最も効率的なタグ型
(エイリアステンプレート)[編集]
English 日本語 中文(简体) 中文(繁體)