I don’t care what people say, Modern C is starting to get really cool.
For example, C 26 compile-time reflection uses this neat little trick to represent heterogeneous data with a single, scalar value (std::meta::info).
This value is *technically* an ID into the compiler's AST. The neat part is you can steal this technique for representing runtime entities as well!
Next Thursday I’m giving a talk in the UK at ACCU on Sea, where I'll show how to use the static metafunctions to help build a homogeneous runtime reflection registry.