title: How does delete deal with pointer constness?
body: <p>I was reading this question <a href="https://stackoverflow.com/questions/755196/deleting-a-const-pointer">Deleting a const pointer</a> and wanted to know more about <code>delete</code> behavior. Now, as per my understanding:</p>
  
  <p><code>delete expression</code> works in two steps:</p>
  
  <ol>
  <li>invoke destructor</li>
  <li>then releases the memory (often with a call to <code>free()</code>) by calling operator delete.</li>
  </ol>
  
  <p><code>operator delete</code> accepts a <code>void*</code>. As part of a test program I overloaded <code>operator delete</code> and found that <code>operator delete</code> doesn't accept <code>const</code> pointer.</p>
  
  <p>Since operator delete does not accept const pointer and delete internally calls operator delete, how does <a href="https://stackoverflow.com/questions/755196/deleting-a-const-pointer">Deleting a const pointer</a> work ?</p>
  
  <p>Does <code>delete</code> uses const_cast internally? </p>