Предоставьте свою собственную функцию соединения слотов, которая не может восстановить соединение. Без соединения клиент не может разорвать его.
Редактировать: пример кода:
struct my_class
{
boost::signals::connection listen_event1(boost::function<void (my_class const&)> const& f)
{
return signal1.connect(f);
}
void listen_event2(boost::function<void my_class const&)> const& f)
{
signal2.connect(f);
}
private:
typedef boost::signals::signal<void(my_class const&)> sig_t;
sig_t signal1;
sig_t signal2;
};
Соединения signal2 не могут быть разорваны.