- simd[meta header]
- std::simd[meta namespace]
- basic_vec[meta class]
- function[meta id-type]
- cpp26[meta cpp]
friend constexpr basic_vec& operator|=(basic_vec& lhs, const basic_vec& rhs) noexcept;- basic_vec[color ff0000]
2つのbasic_vecオブジェクトを要素ごとにビット論理和し、その結果を左辺に代入する。
value_type型の値a, bに対して、式a | bが有効であること。
lhsとrhsに対して、ビット論理和を要素ごとの演算として適用する。
lhs
投げない
#include <simd>
#include <print>
#include <cstdint>
namespace simd = std::simd;
int main()
{
simd::vec<std::uint8_t, 4> a = [](int i) { return static_cast<std::uint8_t>(i); }; // {0, 1, 2, 3}
simd::vec<std::uint8_t, 4> b = std::uint8_t{4}; // {4, 4, 4, 4}
simd::vec<std::uint8_t, 4> a0 = a; // 演算前の値
a |= b;
for (int i = 0; i < a.size(); ++i) {
std::println("{:08b} | {:08b} -> {:08b}", a0[i], b[i], a[i]);
}
}- a |= b[color ff0000]
- a.size()[link size.md]
00000000 | 00000100 -> 00000100
00000001 | 00000100 -> 00000101
00000010 | 00000100 -> 00000110
00000011 | 00000100 -> 00000111
- C++26
- Clang: 22 [mark noimpl]
- GCC: 16.1 [mark noimpl]
- Visual C++: 2026 Update 2 [mark noimpl]