I think this is not a hack. Template symbols (`ScopeExp` with `sds>isTemplateDeclaraiton()`, or `TemplateExp`) and template instances (`ScopeExp` with `sds->isTemplateInstance()`) are pure compile time entities, so just printing them by `pragma(msg)` is enough valuable.

On the other hand, `TOKdottd` and `TOKdotti` have their own context expressions `e1`, so they are not pure compile time entity. Therefore `pragma(msg)` should cause "Cannot interpret" error by interpretation.