
Matthias Schabel wrote:
w.wait_for( delete_signal() );
just introduces a redundant top-level tag class and a corresponding redundant window_base overload.
I would be willing to sacrifice added complexity of implementation to have a more intuitive syntax. Unless I'm reading this wrong, what
wait_for_signal(w->delete_signal)
is trying to say is that w should wait for a generic delete signal - that is, delete_signal isn't really something that belongs to the window type but is instead an abstract directive to a window (or button or widget or whatever) to delete itself.
No, w->delete_signal is actually a boost::signal<> object. You can do boost::signal-like things with it, like connect() a function to it that will be executed when w is destroyed. wait_for_signal(sig) just connects a 'wake up' function to sig and blocks.