#pragma once #include #include #include #include namespace td { namespace utils { template class Signal : private NonCopyable { private: using CallBack = std::function; std::vector m_Callbacks; public: void Connect(CallBack&& a_Callback) { m_Callbacks.push_back(std::move(a_Callback)); } void operator()(Args... args) const { for (const CallBack& callback : m_Callbacks) { callback(args...); } } }; } // namespace utils } // namespace td