std::experimental::simd_abi::deduce
| Definiert in Header <experimental/simd> |
||
| template< class T, std::size_t N, class ...Abis > struct deduce; |
(Parallelismus TS v2) | |
Der Typ deduce<T, N, Abis...>::type ist vorhanden, wenn und nur wenn
- T ein vektorisierbarer Typ ist,
- simd_abi::fixed_size<N> unterstützt wird und
- jeder Typ in Abis... ein ABI-Tag ist.
Sei DA deduce<T, N, Abis...>::type, wenn dieser vorhanden ist, dann
- gilt simd_size_v<T, DA> == N,
- simd<T, DA> ist standardkonstruierbar, d.h. es wird unterstützt,
-
DAistsimd_abi::scalar, wenn N == 1, andernfalls ist es implementierungsabhängig.
Inhalt |
[bearbeiten] Member types
| Name | Definition |
type
|
ein ABI-Tag-Typ, der für den angegebenen Elementtyp T und die Größe N geeignet ist |
[bearbeiten] Helper types
| template< class T, std::size_t N, class ...Abis > using deduce_t = typename deduce<T, N, Abis...>::type; |
(Parallelismus TS v2) | |
[bearbeiten] Notes
simd_abi::deduce ist SFINAE-freundlich.
Das über diese Einrichtung abgeleitete ABI-Tag ist ein "Quality-of-Implementation"-Merkmal. Implementierungen können die Wahl auf der Grundlage von Abis... treffen, können aber auch die Argumente Abis... ignorieren. Eine einfache Implementierung könnte bedingungslos einfach fixed_size<N> zurückgeben. Eine optimierte Implementierung könnte für die meisten Eingaben ein implementierungsabhängiges erweitertes ABI-Tag zurückgeben. Wenn Sie also ein ABI-Tag für eine bestimmte Anzahl von Elementen benötigen, verwenden Sie fixed_size, wenn ABI-Stabilität wichtig ist, und bevorzugen Sie andernfalls deduce_t.
[bearbeiten] Example
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[bearbeiten] See also
| (Parallelismus TS v2) |
Tag-Typ für die Speicherung eines einzelnen Elements (typedef) |
| (Parallelismus TS v2) |
Tag-Typ für die Speicherung einer angegebenen Anzahl von Elementen (Alias-Vorlage) |
| (Parallelismus TS v2) |
Tag-Typ, der ABI-Kompatibilität gewährleistet (Alias-Vorlage) |
| (Parallelismus TS v2) |
Tag-Typ, der am effizientesten ist (Alias-Vorlage) |