template<class U, class A>
constexpr explicit(sizeof(U) != Bytes)
operator basic_vec<U, A>() const noexcept; // (1) C++26
概要
マスクを、対応する要素型のbasic_vecへ変換する。各要素はtrueが1、falseが0に変換される。
要素型のサイズがマスクのBytesと等しくない場合、この変換演算子はexplicitとなる。
テンプレートパラメータ制約
- (1) : 変換先
basic_vec<U, A>の要素数がマスクの要素数と等しいこと
戻り値
- (1) : すべての
i(0以上size()未満)について、第i要素がstatic_cast<U>(operator[](i))で初期化されたbasic_vecオブジェクト
例外
投げない
例
#include <simd>
#include <print>
namespace simd = std::simd;
int main()
{
simd::vec<int, 4> a = [](int i) { return i; }; // {0, 1, 2, 3}
simd::mask<int, 4> m = (a < 2); // {true, true, false, false}
// マスクをbasic_vecへ変換する(true→1, false→0)
simd::vec<int, 4> v = static_cast<simd::vec<int, 4>>(m);
for (int i = 0; i < v.size(); ++i) {
std::print("{} ", v[i]);
}
std::println("");
}
出力
1 1 0 0
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌