From Large-Scale C++ Software Design (Lakos), page 652:
The question is, "In which unique translation unit will the compiler deposit the virtual table definition(s) for a given class?". The trick employed by CFRONT (and many other C++ implementations) is to place the external virtual tables in the translation unit that defines the lexically first non-inline function that appears in the class (if one exists).
Is this still the case with the most used compilers (GCC and Visual C++)? Or was it ever?