#pragma once #include #include #include #include #include namespace sp { template class MessageFactory { public: using IdType = typename TBase::MsgIdType; MessageFactory() : m_Factory(details::ArrayFiller::ArrayCreate()) {} std::unique_ptr CreateMessage(IdType id) const { if (id >= m_Factory.size()) return nullptr; return m_Factory.at(id)(); } private: details::ArrayType m_Factory; }; } // namespace sp