Currently, we load all template specialization if we have more than one module attached and we touch anything around the template definition.
This patch registers the template specializations as a lazily-loadable entities. This reduces the amount of deserializations by 1%.
Can this ever fail at runtime? I'd expect the below code to not compile if D isn't one of these types.