std::experimental:: simd_cast, std::experimental:: static_simd_cast
|
Definiert im Header
<experimental/simd>
|
||
|
template
<
class
V,
class
T,
class
Abi
>
/*siehe unten*/ simd_cast ( const simd < T, Abi > & v ) noexcept ; |
(1) | (Parallelism TS v2) |
|
template
<
class
V,
class
T,
class
Abi
>
/*siehe unten*/ static_simd_cast ( const simd < T, Abi > & v ) noexcept ; |
(2) | (Parallelism TS v2) |
Wandelt ein simd-Objekt in ein anderes simd-Objekt um. Wenn V T ist, gibt simd < T, Abi > zurück; andernfalls, wenn V ein Skalartyp ist, gibt simd < V, simd_abi :: fixed_size < simd < T, Abi > :: size ( ) >> zurück. Andernfalls muss V ein simd-Typ sein, und die Funktion gibt V zurück.
- jeder mögliche Wert des Eingabeelements kann mit dem Ausgabeelement dargestellt werden,
- entweder is_simd_v < V > ist falsch, oder V :: size ( ) ist simd < T, Abi > :: size ( ) .
Inhaltsverzeichnis |
Parameter
| v | - | das Eingabe-SIMD-Objekt |
Rückgabewert
Ein SIMD-Objekt, bei dem das i-te Element initialisiert wird mit static_cast < To > ( v [ i ] ) , wobei To der spezifizierte Ausgabeelementtyp ist.
Hinweise
Die TS-Spezifikation fehlt simd_cast und static_simd_cast Überladungen für simd_mask . Die libstdc++-Implementierung stellt die fehlenden Überladungen im std :: experimental :: __proposed Namespace bereit. Wenn Sie bereits den
namespace stdx = std::experimental;
Shortcut, könnten Sie interessiert sein zu verwenden
namespace stdx { using namespace std::experimental; using namespace std::experimental::__proposed; }
stattdessen. Alternativ implementiert libstdc++ eine __cvt ( ) Member-Funktion in simd_mask , die implizite Konvertierung der Maske erlaubt. Siehe auch: https://github.com/VcDevel/std-simd/issues/41
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: Kein Beispiel |