rendered paste body#include <map>class Widget { public: enum Signal { NONE }; typedef void(*Callback)(Widget&, Signal); typedef std::pair<Widget::Signal, Callback> Event; typedef std::multimap<Widget::Signal, Callback> EventTable; void insert(Signal signal, Callback callback); private: EventTable table;};void Widget::insert(Widget::Signal signal, Widget::Callback callback) { table.insert(signal, callback);}void bar(void);void bar(Widget& w, Widget::Signal s) {}int main() { Widget w; w.insert(Widget::NONE, bar); return 0;}