title: What does it mean std::swap(*(void **)x, *(void **)y)?
body: <p>I just read this answer <a href="https://stackoverflow.com/questions/99297/how-are-virtual-functions-and-vtable-implemented/101890#101890">How are virtual functions and vtable implemented?</a>. The author of the response uses this expression:</p>
  
  <pre><code>std::swap(*(void **)x, *(void **)y);
  // Now x is a C, and y is a B! Hope they used the same layout of members!
  </code></pre>
  
  <p>Somebody could explain how does it work? Why and what does mean <code>(void **)</code> followed by the <code>operator*</code>?</p>