Observer(Event) system (Signals and Slots), type and template based

0
Signals are represented as types. You can connect a member function of some instance to the Observer system. This connected function will be called whenever a signal of a type that is the same type as the function parameter is emitted. ObserverSystem.hpp: #include <vector> class ObserverSystem { public: template<typename SignalType> inline static void emitSignal(const SignalType& signal) { for(auto f : callEverything<SignalType>) { f(signal); } } template<typename SignalType, typename ObjectType> inline static void connect(ObjectType& object, void (ObjectType::*function)(const SignalType& signal)) { bool add = true; for(auto& entry : functions<SignalType, ObjectType>) ...