[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