#include #include #include void myfunction(int arg) { std::cout << "arg is " << arg << std::endl; }; struct coordinate { int x; int y; }; int main() { boost::signal sig; boost::shared_ptr coord(new coordinate); coord->x = 5; sig.connect(boost::bind(&myfunction, boost::signalslib::track(coord, boost::ref(coord->x)))); sig(); coord->x = 4; sig(); return 0; }