<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Apr 3, 2014 at 12:00 PM, Robinson, Paul <span dir="ltr"><<a href="mailto:Paul_Robinson@playstation.sony.com" target="_blank">Paul_Robinson@playstation.sony.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Cool.  Although I have to wonder if there’s a consolidated 2011-as-amended document,<u></u><u></u></span></p>

<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">or do I have to cruise the defects page every time I’m trying to look something up?</span></p></div>
</div></blockquote><div><br></div><div>Sorry, there's no such thing for C++11. I'm going to try to maintain such an amended document for C++14, time permitting.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div lang="EN-US" link="blue" vlink="purple"><div><div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt"><div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0in 0in 0in"><p class="MsoNormal">
<b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> <a href="mailto:metafoo@gmail.com" target="_blank">metafoo@gmail.com</a> [mailto:<a href="mailto:metafoo@gmail.com" target="_blank">metafoo@gmail.com</a>]
<b>On Behalf Of </b>Richard Smith<br>
<b>Sent:</b> Wednesday, April 02, 2014 6:58 PM<br>
<b>To:</b> Robinson, Paul<br>
<b>Cc:</b> <a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br>
<b>Subject:</b> Re: [cfe-dev] Q. on pointer/integer comparison<u></u><u></u></span></p>
</div>
</div><div><div class="h5">
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<div>
<div>
<p class="MsoNormal">On Wed, Apr 2, 2014 at 5:47 PM, Robinson, Paul <<a href="mailto:Paul_Robinson@playstation.sony.com" target="_blank">Paul_Robinson@playstation.sony.com</a>> wrote:<u></u><u></u></p>
<p class="MsoNormal">With -std=c++11, clang will complain about the expression in<br>
bar() but not foo().<br>
<br>
    bool foo(int *p) { return (p != 0); }<br>
    bool bar(int* p) { return (p != (1 - 1)); }<br>
<br>
With -std=c++03, clang accepts both.<br>
<br>
[expr.const]p3 has a Note that says an integral constant expression<br>
can be used as a null pointer constant.<br>
So, I think Clang should accept both even in C++11 mode.<br>
<br>
Bug, or my usual confusion about the standard?  (I can see issuing<br>
a warning, because it would be hard to contrive a real-world case<br>
where somebody would actually want to do this; but if it conforms,<br>
Clang should not reject it.)<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">This was changed by DR 903:<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">  <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#903" target="_blank">
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#903</a><u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">We implement this DR in C++11 onwards, since the C++98 rules are *really* broken when combined with C++11's generalized constant expressions. Without this change, ridiculous things like<u></u><u></u></p>

</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">  struct S { int n; };<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">  int *p = S().n;<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">... would compile, because S().n is an integral constant expression with value 0.<u></u><u></u></p>
</div>
</div>
</div>
</div>
</div></div></div>
</div>
</div>

</blockquote></div></div></div>