命名空间
变体
操作

std::experimental::simd_abi::deduce

来自 cppreference.cn
< cpp‎ | experimental‎ | simd
 
 
实验性
技术规范
文件系统库 (文件系统 TS)
库基础 (库基础 TS)
库基础 2 (库基础 TS v2)
库基础 3 (库基础 TS v3)
并行性扩展 (并行性 TS)
并行性扩展 2 (并行性 TS v2)
并发性扩展 (并发性 TS)
并发扩展 2 (并发 TS v2)
概念 (概念 TS)
范围 (范围 TS)
反射 (反射 TS)
数学特殊函数 (特殊函数 TR)
实验性非 TS
模式匹配
线性代数
std::execution
契约
2D 图形
 
 
 
定义于头文件 <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,则 DAsimd_abi::scalar,否则它是实现定义的。

目录

[编辑] 成员类型

名称 定义
类型 一个适用于指定元素类型 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

[编辑] 示例

[编辑] 参阅

(并行技术规范 v2)
用于存储单个元素的标签类型
(typedef) [编辑]
(并行技术规范 v2)
用于存储指定数量元素的标签类型
(别名模板)[编辑]
(并行技术规范 v2)
确保 ABI 兼容性的标签类型
(别名模板)[编辑]
(并行技术规范 v2)
最高效的标签类型
(别名模板)[编辑]