title: Is it undefined behaviour to delete a null void* pointer?
body: <p>I know that <code>delete</code>ing a null pointer is a no-op:</p>
  
  <blockquote>
    <p>In either alternative, if the value of the operand of delete is the null pointer the operation has no effect.<br>
    <sub>(C++ Standard <code>5.3.5 [expr.delete] p2</code>)</sub> </p>
  </blockquote>
  
  <p>And also that deleting a <code>void*</code> pointer is undefined behaviour because the destructor can't be called as there are no objects of type <code>void</code>:  </p>
  
  <blockquote>
    <p>In the first alternative (<code>delete object</code>), the value of the operand of delete shall be <strong>a pointer to a non-array object or a pointer to a sub-object representing a base class of such an object.</strong> If not, the behavior is undefined.<br>
    <sub>(C++ Standard <code>5.3.5 [expr.delete] p2</code>)</sub></p>
  </blockquote>
  
  <p>Now, normally I take it that things that are listed first overrule things that are listed later on, but what about null <code>void*</code> pointer as the following?</p>
  
  <pre><code>void* p = 0;
  delete p; // UB or well-defined?
  </code></pre>