What about return values?
If you only ever have one slot connected to a signal, or if you only care
about the return value of the last registered one, it's quite straightforward:
sigc::signal<int()> somesignal;
int a_return_value;
a_return_value = somesignal.emit();