Namespaces
Variants

std::experimental::simd_abi:: deduce

From cppreference.net
定义于头文件 <experimental/simd>
template < class T, std:: size_t N, class ... Abis >
struct deduce ;
(并行技术规范 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 > 可默认构造,即受支持,
  • N == 1 ,则 DA 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 ;
(并行技术规范 v2)

注释

simd_abi::deduce 是 SFINAE 友好的。

通过此机制推导出的ABI标签属于实现质量特性。 实现可以基于 Abis... 进行选择,但也可以忽略 Abis... 参数。简单实现可能直接无条件返回 fixed_size < N > 。优化实现可能对大多数输入返回实现定义的扩展ABI标签。因此,若需要特定元素数量的ABI标签,当关注ABI稳定性时请使用 fixed_size ,否则建议使用 deduce_t

示例

参见

(parallelism TS v2)
用于存储单个元素的标签类型
(类型别名)
(parallelism TS v2)
用于存储指定数量元素的标签类型
(别名模板)
(parallelism TS v2)
确保ABI兼容性的标签类型
(别名模板)
(parallelism TS v2)
最高效的标签类型
(别名模板)