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