On 10/27/18 5:27 PM, Sérgio Martins wrote:
Den lör 27 okt. 2018 kl 13:37 skrev Olivier Goffart <oliv...@woboq.com>:
Jokes aside, I think we still should let users use Q_FOREACH for implicitly
shared containers.
But what's the percentage of Qt developers that understand the
subtleties between Q_FOREACH and range-for ?
Having a toolbox with two similar-but-not-quite constructs is bad for
less seasoned users.
I prefer explicitly assigning the container to a const local variable
instead of relying in the magic behind macros.
I don't know... what's the percentage of Qt developers that understands when to
use this qAsConst or const copy gymnastic?
It is a bit ironic that one reason given to deprecate Q_FOREACH is that it may
copy the container in some cases, while the alternative has the same problem in
much more common cases. (It is my impression that implicitly shared container
such as QList/QVector are by far much more used than the one that are not
within a typical Qt code base)
What could be done is to only deprecate partial specialization of
qMakeForeachContainer for QVarLenghtArray and the standard containers.
Or for containers that do not have a 'detach' function.
That way, users would get a warning for the problematic containers, but would
continue to work just fine with with the containers most Qt developer use.
--
Olivier
Woboq - Qt services and support - https://woboq.com - https://code.woboq.org
_______________________________________________
Development mailing list
Development@qt-project.org
http://lists.qt-project.org/mailman/listinfo/development