I just read this answer How are virtual functions and vtable implemented?. The author of the response uses this expression:
std::swap(*(void **)x, *(void **)y);
// Now x is a C, and y is a B! Hope they used the same layout of members!
Somebody could explain how does it work? Why and what does mean (void **)
followed by the operator*
?