Потребовалось прицепить сигналы/слоты из boost-а к классу, у которого перегружен operator (). Пример может выглядеть так:
#include <iostream>
#include <boost/bind.hpp>
#include <boost/signals2.hpp>
//----------------------------------------------------------
typedef boost::signals2::signal<void (void)> VoidSignal;
typedef VoidSignal::slot_type VoidSlot;
struct Listener
{
void operator () (void)
{ std::cerr<<"operator () (void)"<<std::endl; }
void operator () (int value)
{ std::cerr<<"operator () (int)"<<std::endl; }
};
//----------------------------------------------------------
int main(int argc,char** argv)
{
Listener listener;
VoidSignal sig;
sig.connect(VoidSlot(&Listener::operator (),&listener));
/* Если у класса удалить operator () (int), то предыдущая строка компилируется */
sig();
sig.disconnect(boost::bind(&Listener::operator (),&listener));
/* И здесь та же проблема */
sig();
return 0;
}
Что нужно подставить в первые параметры ViodSlot и bind при наличии нескольких operator () ?