diff --git a/lokimq/bt_serialize.h b/lokimq/bt_serialize.h index c7437b3..8b270b6 100644 --- a/lokimq/bt_serialize.h +++ b/lokimq/bt_serialize.h @@ -324,17 +324,6 @@ struct bt_deserialize>> { } }; -/// variant visitor; serializes whatever is contained -class bt_serialize_visitor { - std::ostream &os; -public: - using result_type = void; - bt_serialize_visitor(std::ostream &os) : os{os} {} - template void operator()(const T &val) const { - bt_serialize{}(os, val); - } -}; - template constexpr bool is_bt_deserializable = std::is_same_v || std::is_integral_v || is_bt_output_dict_container || is_bt_output_list_container; @@ -383,7 +372,12 @@ struct bt_deserialize_try_variant_impl template struct bt_serialize, std::void_t...>> { void operator()(std::ostream &os, const std::variant& val) { - std::visit(bt_serialize_visitor{os}, val); + std::visit( + [&os] (const auto& val) { + using T = std::remove_cv_t>; + bt_serialize{}(os, val); + }, + val); } };