std::simd::basic_vec, std::simd::simd
来自cppreference.com
| 在标头 <simd> 定义
|
||
| |
(1) | (C++26 起) |
| |
(2) | (C++26 起) |
1)
std::simd::basic_vec 的特化是数据并行类型。默认的 ABI 标签由实现在编译时决定。2)
std::simd::vec 是允许用户指定某个特定大小的宽度的别名模板。默认宽度由实现在编译时决定。basic_vec 的特化都是完整类型。
- 如果
T是可向量化类型,并且范围[1,64]中存在某个值M使得Abi为 deduce-abi-t<T, M>,那么此特化被启用, - 否则,如果
T不是可向量化类型,那么此特化被禁用, - 否则,这种特化是否被启用由实现定义。
如果 basic_vec<T, Abi> 被禁用,那么此特化的默认构造函数、析构函数、复制构造函数和复制赋值都被弃置。此外,仅提供下述的成员类型。
如果 basic_vec<T, Abi> 被启用,那么 basic_vec<T, Abi> 是可平凡复制 (TriviallyCopyable) 。
模板形参
| T | - | 元素类型;为可向量化类型 |
| Abi | - | 用于确定宽度和存储的标签类型 |
| N | - | 数据并行类型的宽度;元素个数 |
成员类型
| 类型 | 定义 |
value_type
|
T
|
mask_type
|
simd::basic_vec_mask<sizeof(T), Abi>
|
abi_type
|
Abi
|
成员常量
| 名称 | 说明 |
[静态] |
basic_vec 的宽度 (公开静态成员常量) |
成员函数
Template:cpp/numeric/simd/basic vec/dsc constructorTemplate:cpp/numeric/simd/basic vec/dsc operator atTemplate:cpp/numeric/simd/basic vec/dsc operator mem arithTemplate:cpp/numeric/simd/basic vec/dsc operator mem arith2非成员函数
Template:cpp/numeric/simd/basic vec/dsc operator arithTemplate:cpp/numeric/simd/basic vec/dsc operator compoundTemplate:cpp/numeric/simd/basic vec/dsc operator cmp推导指引
| |
(C++26 起) | |
仅当以下情况下提供推导指引:
R实现 contiguous_range 和 sized_range,且ranges::size(r)是常量表达式。
推导的类型等价于 simd::vec<ranges::range_value_t<R>, ranges::size(r)>。
注解
建议各实现支持 basic_vec 的被启用特化和适当的实现定义类型之间的显式转换。这些适当类型是实现中提供的非标准向量类型。
示例
| 本节未完成 原因:暂无示例 |
参阅
(C++26) |
元素类型为 bool 的数据并行类型 (类模板) |
(C++26) |
可以指定宽度的 basic_mask 的便利别名模板 (别名模板) |
| 数值数组,数组掩码和数组切分 (类模板) |