
Hello, I've got the following design: several functors ("Tasks"), when executed, "delegate" to a shared Processor object that performs some coordination between the tasks. The Processor runs the tasks at some stage, and wants to be notified by the task when it's over. However, I wouldn't like them to "know" each other. I even wouldn't like the Processor making assumptions about exact Task's "connection point" signature/name. For this purpose I want the Task to pass its "connection point" as a generic functor - so that the Processor would execute it to subscribe. However, I haven't managed to bind signal::connect. I'd appreciate any idea about what's wrong in the following schematic code: (In the real code the life-time of the objects is managed by means of shared/weak pointers, which are omitted here for the sake of simplicity!) //task.hpp class Task { public: typedef signal<void (void)> CompletionEvent; void operator ()() { // forward the execution to the processor; (*processor)(bind(&Task::run, this), bind(&CompetionEvent::connect, &done_, _1)); // this bind dosen't compile! } private: void run(); Processor *processor_; signal<void(void)> done_; }; // processor.hpp class Processor { public: void operator ()(boost::function<void(void)> task, boost::function<void(boost::function<void(void)>)> completionNotifier) { // this way I'd like to call signal::connect(bind(&Processor::taskDone, this)); completionNotifier(bind(&Processor::taskDone, this)); } private: void taskDone(); }; Thank you!