61 template <
typename _ValueType>
62 explicit Variant(
const _ValueType& value) : Variant()
64 msg_.openVariant<_ValueType>();
72 msg_.openVariant<Variant>();
78 template <
typename _Struct>
81 msg_.openVariant<std::map<std::string, Variant>>();
87 template <
typename... _Elements>
88 Variant(
const std::variant<_Elements...>& value)
95 template <
typename _ValueType>
96 _ValueType get()
const
100 msg_.enterVariant<_ValueType>();
108 template <typename _ValueType, typename = std::enable_if_t<signature_of<_ValueType>::is_valid>>
109 explicit operator _ValueType()
const
111 return get<_ValueType>();
114 template <
typename... _Elements>
115 operator std::variant<_Elements...>()
const
117 std::variant<_Elements...> result;
123 template <
typename _Type>
124 bool containsValueOfType()
const
126 constexpr auto signature = as_null_terminated(signature_of_v<_Type>);
127 return std::strcmp(signature.data(), peekValueType()) == 0;
130 bool isEmpty()
const;
132 void serializeTo(
Message& msg)
const;
133 void deserializeFrom(
Message& msg);
134 const char* peekValueType()
const;