#include <sigc++/sigc++.h>

class Foo
{
public:
   virtual ~Foo() {}
};

class BaseDialog
   : virtual public sigc::trackable
{
public:
   sigc::signal<void> clicked;
};

class SpecificDialog
   : virtual public BaseDialog,
     public Foo
{
public:
   SpecificDialog(void)
   {
      clicked.connect(sigc::bind(sigc::ptr_fun(OnClicked), sigc::ref(*this)));
   }

private:
   static void OnClicked(SpecificDialog &dlg) {}
};

int main(int argc, char **argv)
{
   delete new SpecificDialog();
   return 0;
}
