Namespaces
Variants

std:: datapar:: basic_simd, std:: datapar:: simd

From cppreference.net
定义于头文件 <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 起)
1) std::datapar::basic_simd 特化是一个数据并行类型。默认 ABI 标签由实现在编译时确定。
2) 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

成员常量

名称 描述
[static]
basic_simd 的宽度
(公开静态成员常量)

成员函数

构造 basic_simd 对象
(公开成员函数)
访问指定元素
(公开成员函数)
逐元素递增与递减
(公开成员函数)
逐元素一元运算符
(公开成员函数)

非成员函数

逐元素二元运算符
(函数)
逐元素复合二元运算符
(函数)
逐元素关系运算符
(函数)
simd_select 特化逐元素选择功能
( 仅用于说明的函数* )

推导指引

template < class R, class ... Ts >
basic_simd ( R && r, Ts... ) - > /* 见下文 */ ;
(始于 C++26)

推导指南仅在以下情况存在:

推导出的类型等价于 datapar :: simd < ranges:: range_value_t < R > , ranges:: size ( r ) >

注释

建议实现支持在启用的 basic_simd 特化与适当的实现定义类型之间进行显式转换。这些适当类型是实现中可用的非标准向量类型。

示例

参见

元素类型为 bool 的数据并行类型
(类模板)
可指定宽度的 basic_simd_mask 便捷别名模板
(别名模板)
数值数组、数组掩码和数组切片
(类模板)