QVariant requires the use of the run-time registry based meta-type system. We should offer API in QMetaObject that allows avoiding this and instead uses for example std::any or a new custom Qt type. For example:
We also need the ability to convert between a QVariant and the new variant type. The new type should not do any implicit conversions.