std::experimental::simd_abi::deduce

< cpp‎ | experimental‎ | simd
在标头 <experimental/simd> 定义
template< class T, std::size_t N, class ...Abis >
struct deduce;
(并行 TS v2)

类型 deduce<T, N, Abis...>::type 当且仅当符合下列条件才存在:

  • T 是可向量化的类型,且
  • simd_abi::fixed_size<N> 得到支持,且
  • Abis... 中的每个元素均为 ABI 标签

deduce<T, N, Abis...>::type 存在时以 DA 指代它,则

  • simd_size_v<T, DA> == N
  • simd<T, DA> 可默认构造,即它受支持
  • N == 1DAsimd_abi::scalar,否则它是实现定义的。

成员类型

名字 定义
type 适合给定元素类型 T 和大小 N 的 ABI 标签类型

辅助类型

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

注解

simd_abi::deduce 对 SFINAE 友好。

通过此设施推导的 ABI 标签是实现质量特性。 实现可以基于 Abis... 进行选择,也可以忽略 Abis... 实参。简单的实现可以单纯无条件地返回 fixed_size<N>。优化的实现可以对大多数输入返回实现定义的扩展 ABI 标签。从而若你需要给定元素数的 ABI 标签,就使用 fixed_size,否则更应该用 deduce_t

示例

参阅

(并行 TS v2)
存储单个元素的标签类型
(typedef)
(并行 TS v2)
存储指定数量元素的标签类型
(别名模板)
(并行 TS v2)
确保 ABI 兼容性的标签类型
(别名模板)
(并行 TS v2)
最有效率的标签类型
(别名模板)