[Development] Proposal: Deprecating platforms in Qt 5.6 that don't support lambda
Matthew Woehlke
mw_triad at users.sourceforge.net
Thu Feb 19 20:47:28 CET 2015
On 2015-02-19 14:28, Thiago Macieira wrote:
> On Thursday 19 February 2015 17:46:01 Giuseppe D'Angelo wrote:
>> That on a non-const shared container
>>
>> for (auto i : container)
>>
>> will detach it. That's why having rules instead of saying "just use
>> it", I guess...
>
> And who says it's not what you wanted?
>
> for (auto &i : container) {
> if (i.startsWith("foo"))
> i = bar;
> }
Correct me if I'm wrong, but:
auto c = expensive();
// assume 'c' is shared and a deep copy of c would be really expensive
foreach (auto const& item, c) { ... } // does not deep copy
for (auto const& item : c) { ... } // *does* deep copy; ouch!
I think the point here is that it's easy to incur deep copies using
range-based for when there is no need to do so. There really "needs" to
be a simple and concise way to stop that from happening.
--
Matthew
More information about the Development
mailing list