std:: datapar:: basic_simd, std:: datapar:: 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::datapar::basic_simd
Spezialisierung ist ein datenparalleler Typ. Das standardmäßige ABI-Tag wird zur Kompilierzeit durch die Implementierung bestimmt.
std::datapar::simd
ist eine Alias-Vorlage, die es Benutzern ermöglicht, die Breite auf eine bestimmte Größe festzulegen. Die Standardbreite wird zur Compile-Zeit durch die Implementierung bestimmt.
Jede Spezialisierung von
basic_simd
ist ein vollständiger Typ. Die Spezialisierung ist
-
enabled
, falls
Tein vectorizable type ist und ein WertMim Bereich[1,64]existiert, sodassAbigleich deduce-abi-t < T, M > ist, -
andernfalls
disabled
, falls
Tkein vectorizable type ist, - andernfalls ist es implementierungsdefiniert, ob eine solche Spezialisierung enabled ist.
Wenn basic_simd < T, Abi > deaktiviert ist, hat die Spezialisierung alle gelöschten Standardkonstruktoren, Destruktoren, Kopierkonstruktoren und Kopierzuweisungen. Zusätzlich sind nur die folgenden Member-Typen vorhanden.
Wenn basic_simd < T, Abi > aktiviert ist, ist basic_simd < T, Abi > TriviallyCopyable .
Inhaltsverzeichnis |
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 |
Mitgliedertypen
| Typ | Definition |
value_type
|
T
|
mask_type
|
datapar :: basic_simd_mask < sizeof ( T ) , Abi > |
abi_type
|
Abi
|
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) |
Memberfunktionen
konstruiert ein
basic_simd
Objekt
(öffentliche Elementfunktion) |
|
|
greift auf spezifiziertes Element zu
(öffentliche Elementfunktion) |
|
|
elementweise Inkrement und Dekrement
(öffentliche Elementfunktion) |
|
|
elementweise unäre Operatoren
(öffentliche Elementfunktion) |
Nicht-Member-Funktionen
|
elementweise binäre Operatoren
(Funktion) |
|
|
elementweise zusammengesetzte binäre Operatoren
(Funktion) |
|
|
elementweise relationale Operatoren
(Funktion) |
spezialisiert die elementweise Auswahl für
simd_select
( Nur-Darstellungsfunktion* ) |
Deduktionsanleitung
|
template
<
class
R,
class
...
Ts
>
basic_simd ( R && r, Ts... ) - > /* siehe unten */ ; |
(seit C++26) | |
Der Deduction Guide ist nur vorhanden, wenn:
-
Rmodelliertcontiguous_rangeundsized_range, und - ranges:: size ( r ) ist ein konstanter Ausdruck .
Der abgeleitete Typ entspricht datapar :: simd < ranges:: range_value_t < R > , ranges:: size ( r ) > .
Hinweise
Implementierungen wird empfohlen, explizite Konvertierungen zwischen aktivierten Spezialisierungen von
basic_simd
und entsprechenden implementierungsdefinierten Typen zu unterstützen. Diese entsprechenden Typen sind nicht-standardisierte Vektortypen, die in der Implementierung verfügbar sind.
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |
Siehe auch
|
(C++26)
|
Datenparallel-Typ mit dem Elementtyp
bool
(Klassentemplate) |
|
(C++26)
|
Bequemlichkeits-Alias-Template für
basic_simd_mask
, das seine Breite angeben kann
(Alias-Template) |
|
Numerische Arrays, Arraymasken und Array-Slices
(Klassentemplate) |