something like,
template<typename T> concept Player = requires (T p) { p.jump(); }; class Factory { public: template<Player p> void register_entity(p player); };
something like,
Just as seed for the overall idea.