最終更新日時:
が更新

履歴 編集

class template
<simd>

std::simd::resize(C++26)

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は、データ並列型Vbasic_vecまたはbasic_mask)の要素型を維持したまま、要素数(「width」)をNに変更した型を取得する型特性である。

メンバtypeは、Vがデータ並列型であり、要素数Nを表現できるデータ並列型が存在する場合にのみ存在する。存在するときtypeは、Vと同じ要素型で要素数Nのデータ並列型を表す。

permutechunkcatなど、要素数が変化する操作の戻り値型に用いられる。

#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

処理系

関連項目

参照