Officially, what is typename for?

Following is the quote from Josuttis book: The keyword typename was introduced to specify that the identifier that follows is a type. Consider the following example: Here, typename is used to clarify that SubType is a type of class T. Thus, ptr is a pointer to the type T::SubType. Without typename, SubType would be considered a static member. Thus would be a multiplication of value SubType of type T with ptr.