Is there any way of detecting whether a class is a normal type or is an instantiation of a template type (meta type) which may include non-type parameters?
No, there is not.
Note that template classes are not classes themselves. They are templates for classes.