sigc::trackable::~trackable() is not virtual. 

this can lead to problems when using virtual inheritance of a
sigc::trackable, at least with gcc 3.4-4.1. consider this tree:

class A : public virtual sigc::trackable {}
class B : public virtual sigc::trackable {}
class C : public A, public B {}

this leads to a compiler-induced disaster when destroying a C. or at
least it can (i just spent most of a week tracking this down).

why is this destructor not virtual by default? i thought it was widely
accepted good practice that if the class is ever intended to be
inheritable, its destructor should be virtual? 

--p


        

_______________________________________________
libsigc-list mailing list
libsigc-list@gnome.org
http://mail.gnome.org/mailman/listinfo/libsigc-list

Reply via email to