KUMI v3.1.0
Exquisite Epidote
Loading...
Searching...
No Matches

◆ bit_xor() [1/2]

template<concepts::product_type T>
auto kumi::bit_xor ( T && t)
inlinenodiscardconstexpr

Computes the bitwise XOR of all elements.

On record types, this function operates on the underlying values, not on the fields themselves.

Parameters
tProduct type to operate on
Returns
The value of get<0>(t) ^ ... ^ get<N-1>(t)

Helper type

namespace kumi::result
{
template<product_type T> struct bit_xor;
template<product_type T>
using bit_xor_t = typename bit_xor<T>::type;
}
constexpr auto bit_xor(T &&t, Value init)
Computes the bitwise XOR of all elements.
Definition reduce.hpp:552

Computes the return type of a call to kumi::bit_xor

Examples:

Tuple:

#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
auto t = kumi::tuple{1,short{8},' ', 4ULL};
std::cout << kumi::bit_xor(t, 0) << "\n";
std::cout << kumi::bit_xor(t) << "\n";
}
Fixed-size collection of heterogeneous values.
Definition tuple.hpp:33

Record:

#include <kumi/kumi.hpp>
#include <iostream>
int main()
{
using namespace kumi::literals;
auto t = kumi::record{"a"_id = 1,"b"_id = short{8},"c"_id = ' ', "d"_id = 4ULL};
std::cout << kumi::bit_xor(t, 0) << "\n";
std::cout << kumi::bit_xor(t) << "\n";
}
Fixed-size collection of heterogeneous tagged fields, tags are unique.
Definition record.hpp:36