35 #include <QVariantMap> 46 QHash<int, Introspect_f> Intros_;
55 template<
typename T,
typename U>
56 void Register (
const U& intro, std::result_of_t<U (QVariant)>* =
nullptr)
58 const auto id = qMetaTypeId<T> ();
62 template<
typename T,
typename U>
63 void Register (
const U& intro, std::result_of_t<U (T)>* =
nullptr)
65 Register<T> ([intro] (
const QVariant& var) {
return std::invoke (intro, var.value<T> ()); });
69 QVariantMap operator() (
const T& t)
const 71 return (*
this) (QVariant::fromValue<T> (t));
74 QVariantMap operator() (
const QVariant&)
const;
std::function< QVariantMap(QVariant)> Introspect_f
void Register(const U &intro, std::result_of_t< U(QVariant)> *=nullptr)
void Register(const U &intro, std::result_of_t< U(T)> *=nullptr)