Biblioteca de reflexión Modern-C++

Estoy interesado en usar una biblioteca de reflexión con mi código, sin entrar en detalles, estoy interesado en comprender qué hay disponible, fortalezas y debilidades, etc.

Hasta ahora he notado:

  • CAMP : medio abandonado, sin compromisos durante casi un año.
  • Ponder : una bifurcación CAMP que parece ser más activa.
  • XM : cuarto abandonado, sin compromisos durante medio año en el momento en que escribo esto.
  • CppRefl : aún no lo he comprobado.
  • (no)Boost.Reflect : una biblioteca de estilo boost que no forma parte de Boost en sí.
  • Boost.Mirror : una biblioteca de estilo boost que no forma parte de Boost.
  • Mirror C++ Reflection Utilities Otro estilo Boost'ish, pero no forma parte de Boost. Parece haber sido abandonado en 2011.

No pude encontrar una revisión comparativa de estos, o una recomendación de alguien que tenga experiencia trabajando con ellos. Por lo tanto, recomiende (o contrarrecomiende) una de estas, o cualquier otra biblioteca de reflexión que conozca.

Notas:

  • Prefiero las bibliotecas que requieren C ++ 11 o C ++ 14 (y, por lo tanto, menos feas y complicadas).
  • La dependencia de Boost es aceptable (a regañadientes), así como la dependencia de cualquier otra biblioteca (con suerte, no esotérica).
Es difícil hacer un reflejo dentro de C++. Si está dispuesto a salirse del lenguaje (esto puede fallar en su requisito "no esotérico"), puede obtener acceso completo de metaprogramación a todos los aspectos del código fuente de C++. Consulte programmers.stackexchange.com/questions/257266/…
@IraBaxter: no me importa el código fuente, solo lo que representa el código fuente. Y tampoco quiero transformar la fuente, aunque supongo que algún tipo de transformador de fuente puede ser relevante (con M mayúscula).
Aceptó que no desea manipular el texto del código fuente . El objetivo de la herramienta que mencioné es que brinda un aspecto programático a la estructura del código (como un AST) y (listo para usar) a todos los hechos que podría considerar preguntar en un mundo de reflexión como estructuras de datos . Para preguntas más exóticas sobre el código, se pueden implementar como analizadores personalizados en ese marco. Por supuesto, siempre está la pregunta de qué quieres hacer con las respuestas que obtienes; a menudo es "modificar el comportamiento del código", lo que se puede hacer mediante la transformación de la fuente.

Respuestas (1)

Está el de Antony Polukhin.

magic_get

ahora conocido como "Reflexión Precisa y Plana". Dio una charla sobre esta biblioteca en CppCon 2016: https://www.youtube.com/watch?v=abdeAew3gmQ

Permite un poco de reflexión. Es un truco maravilloso, pero no cubre lo que necesito.