
Frank Mori Hess wrote: [...]
Then any slots with expired weak_ptrs could be cleaned up when the signal is next emitted, or also in signal::connect() to prevent lots of dead connections from accumulating. If we do cleanup in connect(), then I could get rid of the disconnect callback stuff I added, since it would be mostly redundant.
As I mentioned in my reply to Peter Dimov, the current Boost.Signals implementation solves this from the call and disconnection context only. A limited number of dangling connections is not a problem and as this approach only prohibits direct removal of connections from the call context (with the same cleanup of dead connections that you already do), the problem I described does not exist. Is there a special reason you started from scratch instead of using Doug's implementation as a starting point? I know I may come a little late with this, but most of it seems to be reusable for a thread-safe version. Regards Timmo Stange