<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">Let me try to clarify with two more motivating examples:<div><br></div><div><div><div>(1) Nodes.cpp:</div><div><br></div><div><div><div>FunctionParameters::FunctionParameters(ParameterNode* firstParameter, unsigned size)</div><div>&nbsp; &nbsp; : m_size(size)</div><div>{</div><div>&nbsp; &nbsp; unsigned i = 0;</div><div>&nbsp; &nbsp; for (ParameterNode* parameter = firstParameter; parameter; parameter = parameter-&gt;nextParam()) {</div><div><b>&nbsp; &nbsp; &nbsp; &nbsp; auto pattern = parameter-&gt;pattern();</b></div><div><b>&nbsp; &nbsp; &nbsp; &nbsp; pattern-&gt;ref();</b></div><div>&nbsp; &nbsp; &nbsp; &nbsp; patterns()[i++] = pattern;</div><div>&nbsp; &nbsp; }</div><div>}</div></div></div></div><div><br></div><div>If I had to describe this algorithm in English, I’d say, “Collect and retain all the [auto] from the list of parsed parameters.” I think that explanation would be stronger if “[auto]” were a concrete noun.</div><div><br></div><div>Does anybody prefer auto in this context? If so, why?</div><div><br></div><div>(2) ApplyStyleCommand.cpp:</div><div><br></div><div><div>&nbsp; &nbsp; auto children = elementChildren(*dummySpanAncestor);</div><div>&nbsp; &nbsp; for (auto child = children.begin(), end = children.end(); child != end; ++child) {</div><div><b>&nbsp; &nbsp; &nbsp; &nbsp; if (isSpanWithoutAttributesOrUnstyledStyleSpan(&amp;*child))</b></div><div><b>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; toRemove.append(&amp;*child);</b></div><div>&nbsp; &nbsp; }</div></div></div><div><br></div><div>I don’t understand why we’re &amp;*’ing here. That’s a surprising idiom I haven’t seen before, which I would expect to be a no-op. My first question when reading this is, “What is the type of ‘child’, such that I would need to &amp;* it?”.&nbsp;</div><div><br></div><div>Is this "&amp;*child” obvious to everyone else?</div><div><br></div><div>Thanks,</div><div>Geoff</div></body></html>