std:: datapar:: basic_simd, std:: datapar:: simd
|
Défini dans l'en-tête
<simd>
|
||
|
template
<
class
T,
class
Abi
=
/*native-abi*/
<
T
>
>
class basic_simd ; |
(1) | (depuis 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) | (depuis C++26) |
std::datapar::basic_simd
La spécialisation est un type de traitement parallèle des données. L'étiquette ABI par défaut est déterminée par l'implémentation au moment de la compilation.
std::datapar::simd
est un modèle d'alias qui permet aux utilisateurs de spécifier la largeur à une certaine taille. La largeur par défaut est déterminée par l'implémentation au moment de la compilation.
Chaque spécialisation de
basic_simd
est un type complet. La spécialisation est
-
activé
, si
Test un type vectorisable , et qu'il existe une valeurMdans l'intervalle[1,64]telle queAbisoit deduce-abi-t < T, M > , -
sinon
désactivé
, si
Tn'est pas un type vectorisable, - sinon, il est défini par l'implémentation si une telle spécialisation est activée.
Si basic_simd < T, Abi > est désactivé, la spécialisation a tous les constructeurs par défaut, destructeur, constructeur de copie et opérateur d'affectation par copie supprimés. De plus, seuls les types membres ci-dessous sont présents.
Si basic_simd < T, Abi > est activé, basic_simd < T, Abi > est TriviallyCopyable .
Table des matières |
Paramètres du modèle
| T | - | type d'élément ; un type vectorisable |
| Abi | - | type de tag utilisé pour déterminer la largeur et le stockage |
| N | - | la largeur du type parallèle de données ; le nombre d'éléments |
Types membres
| Type | Définition |
value_type
|
T
|
mask_type
|
datapar :: basic_simd_mask < sizeof ( T ) , Abi > |
abi_type
|
Abi
|
Constante membre
| Nom | Description |
|
constexpr
std::
integral_constant
<
simd-size-type
,
simd-size-v
<
T, Abi
>>
size
[static]
|
la largeur de
basic_simd
(constante de membre public statique) |
Fonctions membres
construit un objet
basic_simd
(fonction membre publique) |
|
|
accède à l'élément spécifié
(fonction membre publique) |
|
|
incrémentation et décrémentation élément par élément
(fonction membre publique) |
|
|
opérateurs unaires élément par élément
(fonction membre publique) |
Fonctions non membres
|
opérateurs binaires élément par élément
(fonction) |
|
|
opérateurs binaires composés élément par élément
(fonction) |
|
|
opérateurs relationnels élément par élément
(fonction) |
spécialise la sélection élément par élément pour
simd_select
( fonction uniquement d'exposition* ) |
Guide de déduction
|
template
<
class
R,
class
...
Ts
>
basic_simd ( R && r, Ts... ) - > /* voir ci-dessous */ ; |
(depuis C++26) | |
Le guide de déduction est présent uniquement si :
-
Rmodélisecontiguous_rangeetsized_range, et - ranges:: size ( r ) est une expression constante .
Le type déduit est équivalent à datapar :: simd < ranges:: range_value_t < R > , ranges:: size ( r ) > .
Notes
Il est recommandé que les implémentations prennent en charge les conversions explicites entre les spécialisations activées de
basic_simd
et les types appropriés définis par l'implémentation. Ces types appropriés sont des types vectoriels non standard qui sont disponibles dans l'implémentation.
Exemple
|
Cette section est incomplète
Raison : aucun exemple |
Voir aussi
|
(C++26)
|
type parallèle aux données avec le type d'élément
bool
(modèle de classe) |
|
(C++26)
|
alias pratique pour
basic_simd_mask
pouvant spécifier sa largeur
(modèle d'alias) |
|
tableaux numériques, masques de tableau et tranches de tableau
(modèle de classe) |