<div class="gmail_quote">On Mon, Nov 28, 2011 at 5:19 PM, Ryosuke Niwa <span dir="ltr"><<a href="mailto:rniwa@webkit.org">rniwa@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 class="gmail_quote"><div class="im">On Mon, Nov 28, 2011 at 1:38 PM, David Kilzer <span dir="ltr"><<a href="mailto:ddkilzer@webkit.org" target="_blank">ddkilzer@webkit.org</a>></span> wrote:<br></div><div class="im">

<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><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" target="_blank">constant</a> <a href="http://gcc.gnu.org/news/ssa-ccp.html" target="_blank">propagation</a> regardless of constness of a variable.</div>

<div class="im">

<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><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></blockquote><div><br></div><div>I would agree with Ryosuke.  Other than the self-documenting benefits, it's not as valuable as ref-to-const and pointer-to-const when one is passing the variable around into different functions.</div>

<div><br></div><div>The bugs it would help prevent at compile-time are few and far between; too much so to start enforcing the style right now.  But technically I don't see the harm in letting them slip in where it makes sense.  From a readability standpoint, they are very verbose and make it a little more confusing to understand the intention during quick scans (ptr-to-const vs const-ptr) - especially since ptr-to-const can be pre- or post- type.  <b>const char*</b> is the same as <b>char const*</b> which is not the same as <b>char* const</b>.</div>

<div><br></div><div>I will say that in all the code I've written and read, const ptrs were rarely used, if at all.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="gmail_quote"><span class="HOEnZb"><font color="#888888">
<div>
<br></div><div>- Ryosuke</div><div><br></div></font></span></div>
<br>_______________________________________________<br>
webkit-dev mailing list<br>
<a href="mailto:webkit-dev@lists.webkit.org">webkit-dev@lists.webkit.org</a><br>
<a href="http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev" target="_blank">http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br><span style="color:rgb(214, 214, 214);font-family:Helvetica;font-size:medium"><div style="color:rgb(0, 0, 0)"><font color="#D6D6D6">................................................................</font></div>

<div style="color:rgb(0, 0, 0)"><br></div><div style="color:rgb(0, 0, 0)"><b><font color="#2D770A">Sencha</font></b></div><div style="color:rgb(0, 0, 0)">Jarred Nicholls<font color="#5F5E5F">, </font><font color="#929292">Senior Software Architect</font></div>

<div><a href="http://twitter.com/jarrednicholls" style="color:rgb(0, 0, 204)" target="_blank"><font color="#003F72">@jarrednicholls<br></font></a></div></span><br>