Namensräume
Varianten
Aktionen

std::experimental::simd_abi::deduce

Von cppreference.com
< cpp‎ | experimental‎ | simd
 
 
 
 
 
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,
  • DA ist simd_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

[bearbeiten] See also

(Parallelismus TS v2)
Tag-Typ für die Speicherung eines einzelnen Elements
(typedef) [edit]
(Parallelismus TS v2)
Tag-Typ für die Speicherung einer angegebenen Anzahl von Elementen
(Alias-Vorlage)[edit]
(Parallelismus TS v2)
Tag-Typ, der ABI-Kompatibilität gewährleistet
(Alias-Vorlage)[edit]
(Parallelismus TS v2)
Tag-Typ, der am effizientesten ist
(Alias-Vorlage)[edit]