8 using variant_t = std::variant<Details::ValueOrRef<Xs>...>;
12 EventVariantImpl(std::reference_wrapper<T> event) : variant_{std::in_place_type<Details::ValueOrRef<T>>,
event} {}
15 : variant_(
const_cast<EventVariantImpl&
>(other).visit([](
auto&& arg) -> variant_t {
16 using T = std::remove_reference_t<
decltype(arg.value())>;
17 if constexpr (std::is_const_v<T>) {
18 return variant_t{std::in_place_type<Details::ValueOrRef<T>>, std::cref(arg.value())};
20 return variant_t{std::in_place_type<Details::ValueOrRef<T>>, std::ref(arg.value())};
25 auto visit(F&& visitor) {
26 return std::visit(std::forward<F>(visitor), variant_);
30 auto visit(F&& visitor)
const {
31 return std::visit(std::forward<F>(visitor), variant_);