std::experimental::simd_abi:: deduce
|
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,
-
DAistsimd_abi::scalarwenn 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
|
Dieser Abschnitt ist unvollständig
Grund: Kein 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) |