#ifndef _EVENT_ #define _EVENT_ #include #include #include #include using namespace std; namespace marcelb { class event { map&)>> events; public: template void on(const string& key, function f) { // events[key] = [f](Args... args) { // f(args...); // }; } template void emit(const string& key, Args&&... args) { if (events.find(key) == events.end()) { cout << "No defined listener for event: " << key << endl; return; } else { for (auto& func : events[key]) { func(forward(args)...); } } } }; } #endif