命名空间
变体
操作

std::experimental::simd_abi::deduce

来自 cppreference.cn
< cpp‎ | experimental‎ | simd
 
 
实验性
技术规范
文件系统库 (filesystem TS)
库基础 (library fundamentals TS)
库基础 2 (library fundamentals TS v2)
库基础 3 (library fundamentals TS v3)
并行扩展 (parallelism TS)
并行扩展 2 (parallelism TS v2)
并发扩展 (concurrency TS)
并发扩展 2 (concurrency TS v2)
概念 (concepts TS)
范围 (ranges TS)
反射 (reflection TS)
数学特殊函数 (special functions TR)
实验性非TS
模式匹配
线性代数
std::execution
契约
2D图形
 
 
 
定义于头文件 <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> 是默认可构造的,即它是被支持的,
  • 如果 N == 1,则 DAsimd_abi::scalar,否则它是实现定义的。

内容

[edit] 成员类型

名称 定义
type 适用于指定元素类型 T 和大小 N 的 ABI 标签类型

[edit] 辅助类型

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

[edit] 注解

simd_abi::deduce 是 SFINAE 友好的。

通过此工具推导出的 ABI 标签是一个实现质量特性。实现可以基于 Abis... 进行选择,但也可以忽略 Abis... 参数。一个简单的实现可能只是无条件地返回 fixed_size<N>。一个优化的实现可能会为大多数输入返回一个实现定义的扩展 ABI 标签。因此,如果您需要用于特定数量元素的 ABI 标签,如果 ABI 稳定性是您关心的,请使用 fixed_size,否则首选 deduce_t

[edit] 示例

[edit] 参见

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