std::basic_simd, std::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) |
std::basic_simd ist ein datenparalleler Typ. Das Standard-ABI-Tag wird zur Kompilierzeit durch die Implementierung bestimmt.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
Tein vektorisierbarer Typ ist und ein WertMim Bereich[1,64]existiert, so dassAbideduce-abi-t<T, M> ist, - andernfalls deaktiviert, wenn
Tkein 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 |
| constexpr std::integral_constant< simd-size-type, simd-size-v<T, Abi>> size[static] |
die Breite von basic_simd(öffentliche statische Member-Konstante) |
[edit] Member-Funktionen
konstruiert ein basic_simd-Objekt(public member function) | |
| greift auf das angegebene Element zu (public member function) | |
| elementweise Inkrement und Dekrement (public member function) | |
| elementweise unäre Operatoren (public member function) |
[edit] Nicht-Member-Funktionen
| elementweise binäre Operatoren (function) | |
| elementweise zusammengesetzte binäre Operatoren (function) | |
| elementweise relationale Operatoren (function) | |
| (C++26) |
spezialisiert die elementweise Auswahl für simd_select(nur zur Veranschaulichung*) |
[edit] Deduktionshilfe
| template< class R, class... Ts > basic_simd( R&& r, Ts... ) -> /* siehe unten */; |
(seit C++26) | |
Die Deduktionshilfe ist nur vorhanden, wenn
-
Rcontiguous_rangeundsized_rangemodelliert, und - ranges::size(r) ein Konstantausdruck ist.
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
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |
[edit] Siehe auch
| (C++26) |
Datentyp für parallele Datenverarbeitung mit dem Elementtyp bool (Klassenvorlage) |
| (C++26) |
Bequeme Alias-Vorlage für basic_simd_mask, die ihre Breite angeben kann(Alias-Vorlage) |
| numerische Arrays, Array-Masken und Array-Slices (Klassenvorlage) |