namespace std::simd {
template<simd-size-type N, class V>
struct resize { using type = /*see below*/; };
template<simd-size-type N, class V>
using resize_t = resize<N, V>::type;
}
概要
resizeは、データ並列型V(basic_vecまたはbasic_mask)の要素型を維持したまま、要素数(「width」)をNに変更した型を取得する型特性である。
メンバtypeは、Vがデータ並列型であり、要素数Nを表現できるデータ並列型が存在する場合にのみ存在する。存在するときtypeは、Vと同じ要素型で要素数Nのデータ並列型を表す。
permuteやchunk・catなど、要素数が変化する操作の戻り値型に用いられる。
例
#include <simd>
#include <print>
#include <type_traits>
namespace simd = std::simd;
int main()
{
using V4 = simd::vec<int, 4>;
// 要素型intを維持したまま要素数を8に変更
using V8 = simd::resize_t<8, V4>;
std::println("{}", std::is_same_v<V8, simd::vec<int, 8>>);
}
出力
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で