std::experimental::simd_abi::deduce
来自 cppreference.cn
< 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> 是默认可构造的,即它是被支持的,
- 如果 N == 1,则
DA
是simd_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) |
最有效的标签类型 (别名模板) |