Hello everyone,
The differences can be quickly summarized as follows :
- the reflection API is typed
- the reflection domain includes statements and expressions (so we're able to traverse a function's body, for example)
- anything that can be reflected, can be constructed/injected. so we can create expressions, statements, or declarations. Our use cases cover operators generation/interface generation (member functions synthesis), symbolic differentiation (expressions traversal and synthesis), string matching (statements synthesis), and static analysis (statements/expressions traversal, inspection of functions parameters), among other things.
- we can emit diagnostics at compile-time, and transform value of builtin types to text (we've also constexpr-ised std::format to help emit diagnostics)
This is of course a very brief summary of the differences, and they will hopefully be better demonstrated by the articles.
-Jean-Baptiste