Namespaces
Variants

std::experimental::simd_abi:: deduce

From cppreference.net
Definiert in Header <experimental/simd>
template < class T, std:: size_t N, class ... Abis >
struct deduce ;
(Parallelism TS v2)

Der Typ deduce < T, N, Abis... > :: type ist genau dann vorhanden, wenn:

  • T ist ein vektorisierbarer Typ,
  • simd_abi :: fixed_size < N > wird unterstützt, und
  • jeder Typ in Abis... ist ein ABI-Tag.

Sei DA die Bezeichnung für deduce < T, N, Abis... > :: type wenn es vorhanden ist, dann

  • simd_size_v < T, DA > == N ,
  • simd < T, DA > ist standardmäßig konstruierbar, d.h. es wird unterstützt,
  • DA ist simd_abi::scalar wenn N == 1 , andernfalls ist es implementierungsdefiniert.

Inhaltsverzeichnis

Mitgliedertypen

Name Definition
type ein ABI-Tag-Typ geeignet für den angegebenen Elementtyp T und die Größe N

Hilfstypen

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

Hinweise

simd_abi::deduce ist SFINAE-freundlich.

Das über diese Funktion abgeleitete ABI-Tag ist ein Implementierungsqualitätsmerkmal. Implementierungen können die Wahl auf Abis... basieren, können aber auch die Abis... Argumente ignorieren. Eine einfache Implementierung könnte einfach fixed_size < N > bedingungslos zurückgeben. Eine optimierte Implementierung könnte für die meisten Eingaben ein implementierungsdefiniertes erweitertes ABI-Tag zurückgeben. Folglich, wenn Sie ein ABI-Tag für eine bestimmte Anzahl von Elementen benötigen, verwenden Sie fixed_size wenn ABI-Stabilität von Bedeutung ist, und bevorzugen Sie andernfalls deduce_t .

Beispiel

Siehe auch

(parallelism TS v2)
Tag-Typ zum Speichern eines einzelnen Elements
(typedef)
(parallelism TS v2)
Tag-Typ zum Speichern einer festgelegten Anzahl von Elementen
(alias template)
(parallelism TS v2)
Tag-Typ, der ABI-Kompatibilität sicherstellt
(alias template)
(parallelism TS v2)
Tag-Typ mit maximaler Effizienz
(alias template)