Hice una pregunta no hace mucho tiempo: C++ Runtime Knowledge of Classes y la respuesta que obtuve de un usuario de StackOverflow "Denice" era una URL a un sitio web Meatspace: C++ runtime class registration.
Creo que es una forma genial de usar plantillas y crear instancias de objetos que se derivan de una clase base, de modo que cuando tengo 10 archivos C++, todos pueden simplemente agregar AUTO_REGISTER_BASE() en la parte inferior, y cuando todo está hecho y vinculado, solo aquellas clases/archivos que lo hicieron se registrarían, por lo que en tiempo de ejecución puede cambiar entre las diferentes clases que están disponibles, y las que no están disponibles no están registradas y por lo tanto no pueden ser accidentalmente llamado.
Hay muchas maneras diferentes de hacer notificaciones de eventos (select(), kqueue(),/dev/epoll, Solaris tiene su propia cosa, poll()), y necesitaba una forma de tener todo el Los archivos de clase existen en el directorio, pero dependiendo de qué sistema operativo se ejecutó Makefile, solo compilaría algunos. Necesitaba una manera de saber en tiempo de ejecución cuáles estaban disponibles, y tenía una forma para que el programador utilizara la biblioteca para seleccionar sus preferencias, sin embargo, si no estaba disponible, simplemente usaba el que tenía el sentido más lógico para la plataforma (cada uno tener pesos asignados a ellos).
El código anterior me ayudó a lograr este objetivo, con algunas modificaciones importantes, ¡pero me ayudó de todos modos!
Creo que Boost Metaparse es algo realmente sorprendente https://github.com/boostorg/metaparse https://github.com/sabel83/metaparse_tutorial –