int main(int argc, char** argv) { Dispatcher dispatcher; dispatcher.RegisterCallback<Message1>(1, boost::bind(&OutputMessage1, _1)); dispatcher.RegisterCallback<Message2>(2, boost::bind(&OutputMessage2, _1)); dispatcher.Run(1); dispatcher.Run(2); return 0; }