Earlier quoted context omitted.
It comes up pretty frequently in java. Serialization/Deserialization, adding capabilities based on type, Adding new capabilities to a type, general tuning (for example, adding a timing or logging call onto methods). Almost all the Java web frameworks are giant balls of reflection. Name a function the right way or add the right magic annotation and the framework will autowire it correctly. It's a pretty powerful tool.…
Java reflection is another beast altogether as it is runtime reflection. C++26 reflection is purely compile-time , which not only means it adds zero runtime cost, but also prevents those kind-of-insane use cases you see in Java and C#.
Yes, originally they only supported runtime reflection.
Nowadays they have compile time tooling as well, via plugins, annotation processors, and code generators.
Which is exactly how you can have a Spring like frameworks that do all the AOP magic at compile time, for native code with GraalVM or OpenJ9, like Quarkus or Micronaut.