#pragma once #include #include #include "core/subscribable.hpp" using ProductCount = int; using ProductId = std::string; // inventory manager is not generic ( works with the specific types ProductId // and ProductCount ) but the subscribable is generic class InventoryManager : public Subscribable { private: std::unordered_map inventory_; public: void setInventory(const ProductId& productId, ProductCount quantity); };