> not well-formed C++, for it violates the one-definition rule in that it > *lacks* a definition for the virtual member function foo::~foo(). Does > it make any difference if you add a definition?
Unfortunately no. Replacing the declaration with an inline definition produces a copy of it in undef.o, but we still get an undefined reference to ~bar: nm undef.o | grep D0 U _ZN3barD0Ev 0000000000000000 W _ZN3fooD0Ev Cheers, Rafael