It doesn't need to be. If you have static reflection you can build dynamic one on top. And even things like c#'s emit can be implemented as a library
Reflection.Emit builds the code in memory then loads it explicitly which I bet could easily be achieved in C++ as well