std:: datapar:: basic_simd, std:: datapar:: simd
|
定义于头文件
<simd>
|
||
|
template
<
class
T,
class
Abi
=
/*native-abi*/
<
T
>
>
class basic_simd ; |
(1) | (C++26 起) |
|
template
<
class
T,
/*simd-size-type*/
N
=
/*simd-size-v*/
<
T,
/*native-abi*/
<
T
>>
>
using simd = basic_simd < T, /*deduce-abi-t*/ < T, N >> ; |
(2) | (C++26 起) |
std::datapar::basic_simd
特化是一个数据并行类型。默认 ABI 标签由实现在编译时确定。
std::datapar::simd
是一个别名模板,允许用户指定特定的宽度尺寸。默认宽度由实现在编译时确定。
每个
basic_simd
的特化都是一个完整类型。该特化
-
启用
,若
T是 可向量化类型 ,且存在值M在区间[1,64]内使得Abi为 deduce-abi-t < T, M > , -
否则
禁用
,若
T不是可向量化类型, - 否则,是否启用该特化由实现定义。
如果 basic_simd < T, Abi > 被禁用,该特化版本将具有所有被删除的默认构造函数、析构函数、拷贝构造函数和拷贝赋值运算符。此外,仅存在以下成员类型。
如果 basic_simd < T, Abi > 已启用,则 basic_simd < T, Abi > 满足 TriviallyCopyable 要求。
目录 |
模板参数
| T | - | 元素类型;可向量化类型 |
| Abi | - | 标签类型 ,用于确定宽度和存储方式 |
| N | - | 数据并行类型的宽度;元素数量 |
成员类型
| 类型 | 定义 |
value_type
|
T
|
mask_type
|
datapar :: basic_simd_mask < sizeof ( T ) , Abi > |
abi_type
|
Abi
|
成员常量
| 名称 | 描述 |
|
constexpr
std::
integral_constant
<
simd-size-type
,
simd-size-v
<
T, Abi
>>
size
[static]
|
basic_simd
的宽度
(公开静态成员常量) |
成员函数
构造
basic_simd
对象
(公开成员函数) |
|
|
访问指定元素
(公开成员函数) |
|
|
逐元素递增与递减
(公开成员函数) |
|
|
逐元素一元运算符
(公开成员函数) |
非成员函数
|
逐元素二元运算符
(函数) |
|
|
逐元素复合二元运算符
(函数) |
|
|
逐元素关系运算符
(函数) |
为
simd_select
特化逐元素选择功能
( 仅用于说明的函数* ) |
推导指引
|
template
<
class
R,
class
...
Ts
>
basic_simd ( R && r, Ts... ) - > /* 见下文 */ ; |
(始于 C++26) | |
推导指南仅在以下情况存在:
-
R建模contiguous_range和sized_range,且 - ranges:: size ( r ) 是 常量表达式 。
推导出的类型等价于 datapar :: simd < ranges:: range_value_t < R > , ranges:: size ( r ) > 。
注释
建议实现支持在启用的
basic_simd
特化与适当的实现定义类型之间进行显式转换。这些适当类型是实现中可用的非标准向量类型。
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
(C++26)
|
元素类型为
bool
的数据并行类型
(类模板) |
|
(C++26)
|
可指定宽度的
basic_simd_mask
便捷别名模板
(别名模板) |
|
数值数组、数组掩码和数组切片
(类模板) |