friend constexpr basic_vec& operator^=(basic_vec& lhs, const basic_vec& rhs) noexcept;
概要
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{1}; // {1, 1, 1, 1}
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]);
}
}
出力
00000000 ^ 00000001 -> 00000001
00000001 ^ 00000001 -> 00000000
00000010 ^ 00000001 -> 00000011
00000011 ^ 00000001 -> 00000010
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌