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 объект |
Возвращаемое значение
Объект simd, у которого i-й элемент инициализирован значением static_cast < To > ( v [ i ] ) , где 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
Пример
|
Этот раздел не завершён
Причина: отсутствует пример |