#pragma once #include #include namespace EightBit { template class Signal { private: typedef std::function delegate_t; typedef std::vector delegates_t; delegates_t delegates; public: void connect(delegate_t functor) { delegates.push_back(functor); } void fire(const T& e) const { if (!delegates.empty()) for (auto& delegate : delegates) delegate(e); } }; }