std::experimental::simd_abi::deduce
来自 cppreference.com
< cpp | experimental | simd
定义在头文件 <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> 是默认可构造的,即它受支持,
-
DA
是simd_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) |