
On Friday, October 28, 2011, Szymon Gatner wrote:
Yeah, that is what I just love about libraries designed in this way, to be able to use it, dummy shared_ptr member must be added to class definition even tho it does not actually share anything. Enforcing memory model is bad but what is worst in this design imho is that instead of just making new class trackable (implementation detail) with Signals2 tracking must be explicit at sig.connect() site, so what works with Signals1 is broken with Signals2:
signals2 does provide a trackable base class that is used the same way as the trackable base class in the original library. Disconnection by base class cannot be made thread safe in the general case however, since the base class destructor does not run until after the derived class destructor has already run.