Namespaces
Variants

std::experimental:: simd_cast, std::experimental:: static_simd_cast

From cppreference.net
定义于头文件 <experimental/simd>
template < class V, class T, class Abi >
/*详见下文*/ simd_cast ( const simd < T, Abi > & v ) noexcept ;
(1) (并行TS v2)
template < class V, class T, class Abi >
/*详见下文*/ static_simd_cast ( const simd < T, Abi > & v ) noexcept ;
(2) (并行TS v2)

将simd对象转换为另一个simd对象。若V为T类型,返回 simd < T, Abi > ;否则,若V为标量类型,返回 simd < V, simd_abi :: fixed_size < simd < T, Abi > :: size ( ) >> 。否则V必须是simd类型,函数将返回V。

1) 此函数不参与重载决议,除非满足以下条件:
  • 输入元素的每个可能值都能用输出元素表示,
  • 要么 is_simd_v < V > 为 false,要么 V :: size ( ) 等于 simd < T, Abi > :: size ( )
2) 此函数不参与重载决议,除非满足以下任一条件: is_simd_v < V > 为 false,或 V :: size ( ) 等于 simd < T, Abi > :: size ( )

目录

参数

v - 输入的simd对象

返回值

一个simd对象,其中第i个元素初始化为 static_cast < To > ( v [ i ] ) ,其中To是指定的输出元素类型。

注释

TS规范缺少针对 simd_mask simd_cast static_simd_cast 重载。libstdc++实现在 std :: experimental :: __proposed 命名空间中提供了缺失的重载。如果您已使用

namespace stdx = std::experimental;

作为快捷方式,您可能会感兴趣使用

namespace stdx {
  using namespace std::experimental;
  using namespace std::experimental::__proposed;
}

作为替代方案,libstdc++ 在 simd_mask 中实现了一个 __cvt ( ) 成员函数,该函数允许对掩码进行隐式转换。另请参阅: https://github.com/VcDevel/std-simd/issues/41

示例