#pragma once #include #include #include template class CallbacksSet { public: using Func = std::function; private: std::unique_ptr> callbacks; public: void listen(const Func& callback) { if (callbacks == nullptr) { callbacks = std::make_unique>(); } callbacks->push_back(callback); } void notify(Args&&... args) { if (callbacks) { for (auto& callback : *callbacks) { callback(std::forward(args)...); } } } };