For those who were in today's reception hour, the answer for the question about memory layout with virtual inheritance:
|As I said, there is only one virtual table involved in the memory layout of a B object, and it is B's table. This table holds both B::f and B::g.|
Also, there are two virtual pointers (see drawing), both pointing to that same table. Some implementations say they maybe point to different location within the table.
See Attached drawing.