14 #include <QVariantMap>
19 using Introspect_f = std::function<QVariantMap (QVariant)>;
23 QHash<int, Introspect_f> Intros_;
32 template<
typename T,
typename U>
33 void Register (
const U& intro)
35 if constexpr (std::is_invocable_v<U, QVariant>)
37 const auto id = qMetaTypeId<T> ();
41 Register<T> ([intro] (
const QVariant& var) {
return std::invoke (intro, var.value<T> ()); });
45 QVariantMap operator() (
const T& t)
const
47 return (*
this) (QVariant::fromValue<T> (t));
50 QVariantMap operator() (
const QVariant&)
const;