title: Dereference null is not always UB?
body: <p>I've always known for a fact that the Standard mandates dereferencing <code>null</code> is UB. However,</p>
  <p><a href="http://std.dkuug.dk/JTC1/SC22/WG21/docs/cwg_active.html#232" rel="noreferrer">(Link 1)</a> says</p>
  <blockquote>
  <p>p = 0; *p; is not inherently an error.</p>
  </blockquote>
  <p>and provides a link to</p>
  <p><a href="http://std.dkuug.dk/JTC1/SC22/WG21/docs/cwg_closed.html#315" rel="noreferrer">(Link 2)</a> says</p>
  <blockquote>
  <p>*p is not an error when p is null unless the lvalue is converted to an lvalue</p>
  </blockquote>
  <p>(I believe it's a typo and probably should read <em>lvalue is converted to an <strong>rvalue</strong></em>)</p>
  <p>Link 1 also says</p>
  <blockquote>
  <p>char* p = 0; char *q = &amp;*(p)</p>
  </blockquote>
  <p>is &quot;not undefined&quot;, which I could only read as <em>well-defined</em> or at least <em>implementation-defined</em></p>
  <p>Can a language lawyer provide an authoritative explanation of what's going on?</p>