namespace std::simd {
template<class T, class V>
struct rebind { using type = /*see below*/; };
template<class T, class V>
using rebind_t = rebind<T, V>::type;
}
概要
rebindは、データ並列型V(basic_vecまたはbasic_mask)の要素数(「width」)を維持したまま、要素型をTに変更した型を取得する型特性である。
メンバtypeは、Vがデータ並列型であり、要素型をTとしVと同じ要素数を持つデータ並列型が存在する場合にのみ存在する。存在するときtypeは次を表す。
Vがbasic_vecの特殊化のとき: 要素型T・Vと同じ要素数のbasic_vecVがbasic_maskの特殊化のとき: 対応するbasic_mask
例
#include <simd>
#include <print>
#include <type_traits>
namespace simd = std::simd;
int main()
{
using Vi = simd::vec<int, 4>;
// 要素数4を維持したまま要素型をfloatに変更
using Vf = simd::rebind_t<float, Vi>;
std::println("{}", std::is_same_v<Vf, simd::vec<float, 4>>);
}
出力
true
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌
関連項目
参照
- P1928R15 std::simd — merge data-parallel types from the Parallelism TS 2
- C++26で
std::simdライブラリが追加された
- C++26で