title: Is calling delete on the result of a placement delete which used operator new okay?
body: <p>If I do</p>
  
  <pre><code>struct MyStruct { ~MyStruct() { } };
  
  void *buffer = operator new(1024);
  MyStruct *p = new(buffer) MyStruct();
  // ...
  delete p;     //    &lt;---------- is this okay?
  </code></pre>
  
  <p>is the <code>delete</code> guaranteed to take care of <em>both</em> calling <code>~MyStruct()</code> <em>as well as</em> <code>operator delete</code>?</p>