std::experimental:: simd_cast, std::experimental:: static_simd_cast
|
헤더 파일에 정의됨
<experimental/simd>
|
||
|
template
<
class
V,
class
T,
class
Abi
>
/*see below*/ simd_cast ( const simd < T, Abi > & v ) noexcept ; |
(1) | (parallelism TS v2) |
|
template
<
class
V,
class
T,
class
Abi
>
/*see below*/ static_simd_cast ( const simd < T, Abi > & v ) noexcept ; |
(2) | (parallelism TS v2) |
simd 객체를 다른 simd 객체로 캐스팅합니다. V가 T인 경우 simd < T, Abi > 를 반환합니다; 그렇지 않고 V가 스칼라 타입인 경우 simd < V, simd_abi :: fixed_size < simd < T, Abi > :: size ( ) >> 를 반환합니다. 그 외의 경우 V는 반드시 simd 타입이어야 하며, 함수는 V를 반환합니다.
- 입력 요소의 가능한 모든 값이 출력 요소로 표현될 수 있어야 하며,
- is_simd_v < V > 가 거짓이거나, V :: size ( ) 가 simd < T, Abi > :: size ( ) 와 동일해야 합니다.
목차 |
매개변수
| v | - | 입력 SIMD 객체 |
반환값
i번째 요소가 static_cast < To > ( v [ i ] ) 로 초기화된 simd 객체. 여기서 To는 지정된 출력 요소 타입입니다.
참고 사항
TS 명세에는 simd_cast 와 static_simd_cast 의 simd_mask 오버로드가 누락되어 있습니다. libstdc++ 구현체는 누락된 오버로드들을 std :: experimental :: __proposed 네임스페이스에서 제공합니다. 만약 이미 사용 중이시라면
namespace stdx = std::experimental;
바로 가기, 사용해 보시면 좋을 것 같습니다
namespace stdx { using namespace std::experimental; using namespace std::experimental::__proposed; }
대신에, libstdc++는 __cvt ( ) 멤버 함수를 simd_mask 에 구현하여 마스크의 암시적 변환을 허용합니다. 참고: https://github.com/VcDevel/std-simd/issues/41
예제
|
이 섹션은 불완전합니다
이유: 예제가 없음 |