Namespaces
Variants

std::experimental::simd_abi:: deduce

From cppreference.net
Défini dans l'en-tête <experimental/simd>
template < class T, std:: size_t N, class ... Abis >
struct deduce ;
(parallelism TS v2)

Le type deduce < T, N, Abis... > :: type est présent si et seulement si :

  • T est un type vectorisable,
  • simd_abi :: fixed_size < N > est pris en charge, et
  • chaque type dans Abis... est une étiquette ABI.

Soit DA désignant deduce < T, N, Abis... > :: type lorsqu'il est présent, alors

  • simd_size_v < T, DA > == N ,
  • simd < T, DA > est constructible par défaut, c'est-à-dire qu'il est pris en charge,
  • DA est simd_abi::scalar si N == 1 , sinon il est défini par l'implémentation.

Table des matières

Types membres

Nom Définition
type un type de tag ABI approprié pour le type d'élément spécifié T et la taille N

Types auxiliaires

template < class T, std:: size_t N, class ... Abis >
using deduce_t = typename deduce < T, N, Abis... > :: type ;
(TS parallélisme v2)

Notes

simd_abi::deduce est compatible avec SFINAE.

L'étiquette ABI déduite via cette fonctionnalité est une caractéristique de qualité d'implémentation. Les implémentations peuvent baser le choix sur Abis... , mais peuvent également ignorer les Abis... arguments. Une implémentation simple pourrait simplement retourner fixed_size < N > inconditionnellement. Une implémentation optimisée pourrait retourner une étiquette ABI étendue définie par l'implémentation pour la plupart des entrées. Par conséquent, si vous avez besoin d'une étiquette ABI pour un certain nombre d'éléments, utilisez fixed_size si la stabilité ABI est importante, et préférez deduce_t dans les autres cas.

Exemple

Voir aussi

(parallelism TS v2)
type d'étiquette pour stocker un seul élément
(typedef)
(parallelism TS v2)
type d'étiquette pour stocker un nombre spécifié d'éléments
(alias template)
(parallelism TS v2)
type d'étiquette qui garantit la compatibilité ABI
(alias template)
(parallelism TS v2)
type d'étiquette le plus efficace
(alias template)