命名空间
变体
操作

std::experimental::simd_abi::deduce

来自 cppreference.com
< 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> 是默认可构造的,即它受支持,
  • DAsimd_abi::scalar,如果 N == 1,否则它是实现定义的。

内容

[编辑] 成员类型

名称 定义
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 标签是实现质量的特征。实现可以基于 Abis... 进行选择,但也可以忽略 Abis... 参数。一个简单的实现可能只是简单地返回 fixed_size<N>,而无需条件。一个优化的实现可能对大多数输入返回一个实现定义的扩展 ABI 标签。因此,如果您需要一个特定元素数量的 ABI 标签,如果 ABI 稳定性很重要,请使用 fixed_size,否则请优先使用 deduce_t

[编辑] 示例

[编辑] 参见

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