DarkMoon Engine
C++using GameCMPs = MP::TypeList<RenderComponent, PhysicsComponent>;
using GameTAGs = MP::TypeList<TagPlayer, TagEnemy>;
using EM = EntityManager<GameCMPs, GameTAGs>;
Entity& e = em.newEntity();
em.addComponent<RenderComponent>(e);
em.addTag<TagPlayer>(e);
em.forEach<MP::TypeList<RenderComponent>, MP::TypeList<TagPlayer>>(
[&](Entity& e, RenderComponent& r) { /* ... */ }
);