- simd[meta header]
- std::simd[meta namespace]
- basic_mask[meta class]
- function template[meta id-type]
- cpp26[meta cpp]
template<class U, class A>
constexpr explicit(sizeof(U) != Bytes)
operator basic_vec<U, A>() const noexcept; // (1) C++26- basic_vec[link ../basic_vec.md]
マスクを、対応する要素型の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("");
}- simd::mask[link ../basic_mask.md]
- simd::vec[link ../basic_vec.md]
- v.size()[link size.md]
- v[i][link op_at.md]
1 1 0 0
- C++26
- Clang: 22 [mark noimpl]
- GCC: 16.1 [mark noimpl]
- Visual C++: 2026 Update 2 [mark noimpl]