<div dir="ltr">Hi.<div><br></div><div>I would like to submit a patch. Since it is probably going to break binary compatibility and is mostly about coding conventions, I would like to have some feedback before investing time.</div><div><br></div><div>The general idea is to create a playground project for automatic (de)serialization for Qt (not manual, i.e. overriding operators). The only stopper is container deserialization.</div><div>To operate containers without staticaly knowing their types, one should be able to make conversions from QVariant containing a container to container of QVariants and vice versa.</div><div>Seriazation is quite straightforward via QSequentialIterable and QAssociativeIterable. But deserialization is currently possible only by QMetaType::registerConverter. I think, that this is would be so nice to have an ability to create a container via QVariant from collection of QVariant instances without a need for custom converters.</div><div>~</div><div>QList<QVariant> variantContainer;</div><div>variantContainer.append(QVariant(123));</div><div>variantContainer.append(QVariant(321));</div><div>QVariant variant(QVariant::fromValue(variantContainer));</div><div>QVariant containerVariant(variant.convert(qMetaTypeId<QList<int> >()));</div><div>~</div><div><br></div><div>And so I have stumbled into a problem. QSequentialIterable  and QAssociativeIterable related code is scattered across <qvariant.h> and <qmetatype.h>. All related conversions are conveyed in templates, instead of <a href="https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qvariant.cpp#n387" target="_blank">https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qvariant.cpp#n387</a> .</div><div>I just don't feel, that further <a href="https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qvariant.h#n782" target="_blank">https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qvariant.h#n782</a> and <a href="https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qmetatype.h#n1121" target="_blank">https://code.qt.io/cgit/qt/qtbase.git/tree/src/corelib/kernel/qmetatype.h#n1121</a> development is the way to go.</div><div><br></div><div>And so the question is: should I try to refactor sequential and associative iterators, so templates are used only to staticaly gather information about containers and conversions are made in qvariant.cpp, where they belong?</div><div><br></div><div>It also would be nice to hear, if someone acknowledges this conversion feature to be of use.</div><div><br></div><div>Thanks for reading this far.</div><div><br></div></div>