C ++ - невероятно сложный язык. «Отражающие» API не были частью языкового дизайна, и поэтому, по сути, его там нет.
Если вам нужны «рефлексия» и «метапрограммирование» общего назначения, вы можете получить это, перейдя за пределы языка и используя систему преобразования программ (PTS) . Такой инструмент для ваших целей должен анализировать C ++ (более чем в одном модуле компиляции за раз), предоставлять вам доступ к всем структурам языка, что позволяет вам отражать, то есть определять тип (или другие свойства) любой конструкции (например, переменной, выражения или другой синтаксической конструкции) и позволяют применять произвольные модификации кода. Очевидно, что это не произойдет во время выполнения (хотя я полагаю, что вы могли бы раскошелиться на такой механизм, если бы вы настаивали).
Наш инструментарий реинжиниринга программного обеспечения DMS с C ++ Front End имеет проверенный опыт анализа и преобразования очень больших наборов кода C ++. См. технические документы для некоторых подробных случаев использования. Я не думаю, что другие инструменты на сайте Википедии обрабатывают C ++, хотя у них правильное мышление.
Хотя это на самом деле не PTS (без преобразований источника в источник), Clang тоже может работать. Я не уверен (так как я не использую все это), как он может собирать информацию о типах и использовать ее для запуска преобразований в исходный код. Очевидно, что очень хорошо использовать такую информацию для генерации кода LLVM.