I am working on an application with a message based / asynchronous agent-like architecture. There will be a few dozen distinct message types, each represented by C++ types.<
Plain structs do not support counting members, but boost::fusion offers a good way to declare a struct that is count- and iteratable.