friend constexpr basic_vec operator^(const basic_vec& lhs, const basic_vec& rhs) noexcept;
概要
2つのbasic_vecオブジェクトの対応する要素同士でビットごとの排他的論理和を求める。要素型が整数型である場合に使用できる。
Hidden friendsとして定義される。
テンプレートパラメータ制約
式a ^ b(aとbはvalue_type型)が適格であること。
戻り値
lhsとrhsにビット排他的論理和を要素ごとに適用した結果で初期化されたbasic_vecオブジェクトを返す。
例
#include <simd>
#include <print>
#include <cstdint>
namespace simd = std::simd;
int main()
{
std::uint8_t av[] = {0b00001100, 0b00001010, 0b00000110, 0b00000101};
std::uint8_t bv[] = {0b00001010, 0b00000110, 0b00000011, 0b00000100};
simd::vec<std::uint8_t, 4> a = [&](int i) { return av[i]; };
simd::vec<std::uint8_t, 4> b = [&](int i) { return bv[i]; };
simd::vec<std::uint8_t, 4> c = a ^ b;
for (int i = 0; i < c.size(); ++i) {
std::println("{:08b} ^ {:08b} -> {:08b}", a[i], b[i], c[i]);
}
}
出力
00001100 ^ 00001010 -> 00000110
00001010 ^ 00000110 -> 00001100
00000110 ^ 00000011 -> 00000101
00000101 ^ 00000100 -> 00000001
バージョン
言語
- C++26
処理系
- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌