#pragma once #include using Callback = std::function; template class IObservable { public: virtual void listen() const = 0; virtual void attach(const Event &event, Callback callback) = 0; virtual void notify(const Event &event) const = 0; };