template <class Lhs, class Rhs, class Output = Lhs>
requires(const Lhs& lhs, const Rhs& rhs) {
{ lhs ^ rhs } -> std::same_as<Output>;
}