More progress - now __typeid comes with statically-typed overloads, so whenever T is statically known, typeid(T).whatever() will pick an efficient inlined implementation instead of a virtual call. So TypeInfo becomes useful for static manipulation as well. https://github.com/dlang/druntime/pull/3174/files