std:: datapar:: basic_simd, std:: datapar:: simd
|
Definido en el encabezado
<simd>
|
||
|
template
<
class
T,
class
Abi
=
/*native-abi*/
<
T
>
>
class basic_simd ; |
(1) | (desde 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) | (desde C++26) |
std::datapar::basic_simd
la especialización es un tipo de procesamiento de datos en paralelo. La etiqueta ABI predeterminada es determinada por la implementación en tiempo de compilación.
std::datapar::simd
es una plantilla de alias que permite a los usuarios especificar el ancho a un tamaño determinado. El ancho predeterminado es determinado por la implementación en tiempo de compilación.
Cada especialización de
basic_simd
es un tipo completo. La especialización es
-
habilitado
, si
Tes un tipo vectorizable , y existe un valorMen el rango[1,64]tal queAbies deduce-abi-t < T, M > , -
de lo contrario
deshabilitado
, si
Tno es un tipo vectorizable, - de lo contrario, está definido por la implementación si dicha especialización está habilitada.
Si basic_simd < T, Abi > está deshabilitado, la especialización tiene todos los constructores por defecto, destructor, constructor de copia y asignación de copia eliminados. Además, solo están presentes los tipos de miembro siguientes.
Si basic_simd < T, Abi > está habilitado, basic_simd < T, Abi > es TriviallyCopyable .
Contenidos |
Parámetros de plantilla
| T | - | tipo de elemento; un tipo vectorizable |
| Abi | - | tipo de etiqueta utilizado para determinar el ancho y almacenamiento |
| N | - | el ancho del tipo de datos paralelos; el número de elementos |
Tipos de miembros
| Tipo | Definición |
value_type
|
T
|
mask_type
|
datapar :: basic_simd_mask < sizeof ( T ) , Abi > |
abi_type
|
Abi
|
Constante de miembro
| Nombre | Descripción |
|
constexpr
std::
integral_constant
<
simd-size-type
,
simd-size-v
<
T, Abi
>>
size
[static]
|
el ancho de
basic_simd
(constante de miembro público estático) |
Funciones miembro
construye un objeto
basic_simd
(función miembro pública) |
|
|
accede al elemento especificado
(función miembro pública) |
|
|
incremento y decremento por elementos
(función miembro pública) |
|
|
operadores unarios por elementos
(función miembro pública) |
Funciones no miembro
|
operadores binarios elemento a elemento
(función) |
|
|
operadores binarios compuestos elemento a elemento
(función) |
|
|
operadores relacionales elemento a elemento
(función) |
especializa la selección elemento por elemento para
simd_select
( función solo para exposición* ) |
Guía de deducción
|
template
<
class
R,
class
...
Ts
>
basic_simd ( R && r, Ts... ) - > /* ver más abajo */ ; |
(desde C++26) | |
La guía de deducción está presente solo si:
-
Rmodelacontiguous_rangeysized_range, y - ranges:: size ( r ) es una expresión constante .
El tipo deducido es equivalente a datapar :: simd < ranges:: range_value_t < R > , ranges:: size ( r ) > .
Notas
Se recomienda que las implementaciones admitan conversiones explícitas entre especializaciones habilitadas de
basic_simd
y tipos apropiados definidos por la implementación. Estos tipos apropiados son tipos vectoriales no estándar que están disponibles en la implementación.
Ejemplo
|
Esta sección está incompleta
Motivo: sin ejemplo |
Véase también
|
(C++26)
|
tipo de datos paralelos con el tipo de elemento
bool
(plantilla de clase) |
|
(C++26)
|
plantilla de alias conveniente para
basic_simd_mask
que puede especificar su ancho
(plantilla de alias) |
|
arreglos numéricos, máscaras de arreglo y segmentos de arreglo
(plantilla de clase) |