<div class="gmail_quote">As I stated on the other thread, I'm against using const pointers. However, I see benefits in using const local variables.</div><div class="gmail_quote"><br></div><div class="gmail_quote">On Tue, Nov 29, 2011 at 6:19 PM, Darin Adler <span dir="ltr"><<a href="mailto:darin@apple.com">darin@apple.com</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div style="word-wrap:break-word"><div><div>I thought we were discussing local variables in general, not pointer-typed ones specifically.</div><blockquote type="cite"><div style="word-wrap:break-word"><div>* Pros</div><div>

  - Documents use of variable.</div></div></blockquote><div>I would say “documents the fact that the variable’s value is not changed”. I think it’s overstating things to say it “documents use”.</div></div></div></blockquote>

<div><br></div><div>Well, we can always call some function with a pointer to it, and the callee can const_cast it. Having said that, declaring it explicitly const makes it clear that it's not intended to be used like that.</div>

<div><br></div><div>For example, when I was writing a patch for <a href="https://bugs.webkit.org/show_bug.cgi?id=69267">https://bugs.webkit.org/show_bug.cgi?id=69267</a>, I encountered a line:</div><div><font size="4" style="background-color: rgb(255, 255, 255);"><span style="font-family: monospace; ">resolver</span><span class="p" style="font-family: monospace; ">.</span><span style="font-family: monospace; ">setPosition</span><span class="p" style="font-family: monospace; ">(</span><span style="font-family: monospace; ">oldEnd</span><span class="p" style="font-family: monospace; ">);</span></font></div>

<div>at <a href="http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp?rev=101180#L1287">http://trac.webkit.org/browser/trunk/Source/WebCore/rendering/RenderBlockLineLayout.cpp?rev=101180#L1287</a></div>

<div><br></div><div>It took me a while before I figured out that oldEnd is never modified and I can do some optimizations here. Presumably I still have to manually look for all lines of code that touches oldEnd even if oldEnd was const due to const_cast. However, it would have at least signaled me the intent.</div>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div style="word-wrap:break-word"><div><blockquote type="cite"><div style="word-wrap:break-word"><div>  - Prevents misuse of variable in a later patch (by a different author) through enforcement of const-ness.</div>

</div></blockquote><div><br></div><div>Prevents one specific type of misuse: Setting the variable to another value. And that may not be misuse despite the fact that the original author didn’t plan on changing it.</div></div>

</div></blockquote><div><br></div><div>Right, but it tells us the intent of the author, and appears to be useful even if the variable started with prefixes like "old", "original", and "previous".</div>

<div><br></div><div>- Ryosuke</div><div><br></div></div>