<div class="gmail_quote">On Mon, Nov 28, 2011 at 1:38 PM, David Kilzer <span dir="ltr"><<a href="mailto:ddkilzer@webkit.org">ddkilzer@webkit.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div style="word-wrap:break-word">In a discussion on <a href="https://bugs.webkit.org/show_bug.cgi?id=71921" target="_blank">Bug 71921</a>, Antti, Darin Adler and I started a discussion about using C++ constant pointers in WebKit.  Does the WebKit community have a consensus opinion on the matter?<div>

<br></div><div>* Pros</div><div>  - Documents use of variable.</div><div>  - Prevents misuse of variable in a later patch (by a different author) through enforcement of pointer const-ness.</div><div>  - May help compiler optimize code.  (We weren't sure whether modern compilers do this on their own or not.)</div>

</div></blockquote><div><br></div><div>Don't think so. As far as I know, C++ compilers ignore "const" for the purpose of code optimization because we can always re-cast it to non-const variable. On the other hand, modern optimizing compilers might do SSA-based <a href="http://en.wikipedia.org/wiki/Sparse_conditional_constant_propagation">constant</a> <a href="http://gcc.gnu.org/news/ssa-ccp.html">propagation</a> regardless of constness of a variable.</div>

<div><br></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>* Cons</div><div><div>  - Darin Adler doesn't ever recall fixing a bug in WebKit where a constant pointer would have helped.</div>

</div><div>  - Slightly more verbose syntax for constant pointers to a constant string (const char * const pointer;) or even a constant pointer to a mutable string (char * const pointer;).</div></div></blockquote><div><br>

</div><div>I'd argue against using constant pointers simply because I don't think the existing WebKit code uses it, and I don't see much benefit in comparison to pointers or references to const objects.</div>
<div>
<br></div><div>- Ryosuke</div><div><br></div></div>