[Development] Q_MOVABLE_TYPE of Q${Container}
Milian Wolff
mail at milianw.de
Fri Aug 2 13:56:33 CEST 2013
On Friday 02 August 2013 13:47:58 Milian Wolff wrote:
> Hey!
>
> Are there any reasons why none of the container classes are declared as
> movable in Qt5? Would a patch adding that be accepted, or does it break the
> ABI or anything?
>
> Especially interesting to me is that none of the containers such as QString,
> QVector, QList, QMap, QHash, QByteArray, QSet etc. pp. is declared movable.
>
> But QStringList is :]
Note: My grepping skills failed me, and Peppe just showed me
http://code.woboq.org/qt5/qtbase/src/corelib/global/qtypeinfo.h.html#133
But what about QString/QByteArray? Do I also miss that somewhere?
> To my knowledge, none of the containers above are implemented in a way that
> prevents safe move operations.
>
> I know that these are implicitly shared, so the copying is not that slow,
> but still - saving the atomic operations on the refcounter is certainly
> worth it.
>
> I've added the movable declarations to many structs in KDevelop codebase,
> which also contain containers and so far did not find any bugs or issues
> with it. Only tested on x86 though. I.e. I've successfully done stuff like:
>
> struct Foo {
> QContainer<Asdf> blub;
> }
> Q_DECLARE_TYPEINFO(Foo, Q_MOVABLE_TYPE);
> QVector<Foo> foos;
--
Milian Wolff
mail at milianw.de
http://milianw.de
More information about the Development
mailing list