On Wednesday 20 January 2016 05:20:36 Kevin Kofler wrote: > Thiago Macieira wrote: > > foreach copies; ranged for doesn't. > > … unless you try to use it on a non-const Qt container with usage count >1, > then it will even deep-copy (detach) it! (I know you know this, but you > should warn people about it.) So you need to be very careful about what you > pass to ranged for.
Indeed. But his is the argument that convinced me: with foreach and Qt containers, you usually get the runtime performance you want, but it costs in dead code since the deep-copy code will be present (at least until we can get rid of the unsharable flag). With ranged for plus qAsConst, there's no copy code generated. So instead of: foreach (auto x, container) You'll write: for (auto x : qAsConst(container)) or if you know it's already const, you can skip the qAsConst part. This is no more and no less readable, but is more explicit about what it does. -- Thiago Macieira - thiago.macieira (AT) intel.com Software Architect - Intel Open Source Technology Center _______________________________________________ Development mailing list Development@qt-project.org http://lists.qt-project.org/mailman/listinfo/development