Namensräume
Varianten
Aktionen

std::basic_simd, std::simd

Von cppreference.com
< cpp‎ | numeric‎ | simd
 
 
 
 
 
Definiert im Header <simd>
template< class T, class Abi = /*native-abi*/<T> >
class basic_simd;
(1) (seit C++26)
template< class T, /*simd-size-type*/ N = /*simd-size-v*/<T, /*native-abi*/<T>> >
using simd = basic_simd<T, /*deduce-abi-t*/<T, N>>;
(2) (seit C++26)
1) Eine Spezialisierung von std::basic_simd ist ein datenparalleler Typ. Das Standard-ABI-Tag wird zur Kompilierzeit durch die Implementierung bestimmt.
2) std::simd ist eine Alias-Schablone, die es Benutzern ermöglicht, die Breite auf eine bestimmte Größe festzulegen. Die Standardbreite wird zur Kompilierzeit durch die Implementierung bestimmt.

Jede Spezialisierung von basic_simd ist ein vollständiger Typ. Die Spezialisierung ist

  • aktiviert, wenn T ein vektorisierbarer Typ ist und ein Wert M im Bereich [164] existiert, so dass Abi deduce-abi-t<T, M> ist,
  • andernfalls deaktiviert, wenn T kein vektorisierbarer Typ ist,
  • andernfalls ist es implementierungsabhängig, ob eine solche Spezialisierung aktiviert ist.

Wenn basic_simd<T, Abi> deaktiviert ist, hat die Spezialisierung einen gelöschten Standardkonstruktor, Destruktor, Kopierkonstruktor und Kopierzuweisungsoperator. Zusätzlich sind nur die folgenden Member-Typen vorhanden.

Wenn basic_simd<T, Abi> aktiviert ist, ist basic_simd<T, Abi> TriviallyCopyable.

Inhalt

[edit] Template-Parameter

T - Elementtyp; ein vektorisierbarer Typ
Abi - Tag-Typ zur Bestimmung der Breite und Speicherung
N - die Breite des datenparallelen Typs; die Anzahl der Elemente

[edit] Member-Typen

Typ Definition
value_type T
mask_type std::basic_simd_mask<sizeof(T), Abi>
abi_type Abi

[edit] Member-Konstante

Name Beschreibung
[static]
die Breite von basic_simd
(öffentliche statische Member-Konstante)

[edit] Member-Funktionen

konstruiert ein basic_simd-Objekt
(public member function) [edit]
greift auf das angegebene Element zu
(public member function) [edit]
elementweise Inkrement und Dekrement
(public member function) [edit]
elementweise unäre Operatoren
(public member function) [edit]

[edit] Nicht-Member-Funktionen

elementweise binäre Operatoren
(function) [edit]
elementweise zusammengesetzte binäre Operatoren
(function) [edit]
elementweise relationale Operatoren
(function) [edit]
spezialisiert die elementweise Auswahl für simd_select
(nur zur Veranschaulichung*)[edit]

[edit] Deduktionshilfe

template< class R, class... Ts >
basic_simd( R&& r, Ts... ) -> /* siehe unten */;
(seit C++26)

Die Deduktionshilfe ist nur vorhanden, wenn

Der abgeleitete Typ ist äquivalent zu std::simd<ranges::range_value_t<R>, ranges::size(r)>.

[edit] Hinweise

Implementierungen werden empfohlen, explizite Konvertierungen zwischen aktivierten Spezialisierungen von basic_simd und entsprechenden implementierungsdefinierten Typen zu unterstützen. Diese entsprechenden Typen sind nicht-standardmäßige Vektortypen, die in der Implementierung verfügbar sind.

[edit] Beispiel

[edit] Siehe auch

Datentyp für parallele Datenverarbeitung mit dem Elementtyp bool
(Klassenvorlage) [edit]
(C++26)
Bequeme Alias-Vorlage für basic_simd_mask, die ihre Breite angeben kann
(Alias-Vorlage)[edit]
numerische Arrays, Array-Masken und Array-Slices
(Klassenvorlage) [edit]