Namespaces
Variants

std:: datapar:: basic_simd, std:: datapar:: simd

From cppreference.net
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) std::datapar::basic_simd Spezialisierung ist ein datenparalleler Typ. Das standardmäßige ABI-Tag wird zur Kompilierzeit durch die Implementierung bestimmt.
2) 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 T ein vectorizable type ist und ein Wert M im Bereich [ 1 , 64 ] existiert, sodass Abi gleich deduce-abi-t < T, M > ist,
  • andernfalls disabled , falls T kein 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
[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:

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

Siehe auch

Datenparallel-Typ mit dem Elementtyp bool
(Klassentemplate)
Bequemlichkeits-Alias-Template für basic_simd_mask , das seine Breite angeben kann
(Alias-Template)
Numerische Arrays, Arraymasken und Array-Slices
(Klassentemplate)