Typename cannot be used as an identifier because it is a reserved keyword for C++. It is used when writing templates in C++. It specifies that a dependent variable name in a template definition is a type in itself. It is used as an alternative keyword to 'class'.
The answer to this is the Typename. This cannot be used as an identifier because it will not be able to communicate its meaning properly. If you truly want an identifier to be recognized, you need to use its parameters and its members. If in case you see the need to use a type name, you should choose a language-independent name as this can make it more identifiable.
If this violation is done, do not worry because it can easily be fixed. The type name can easily be changed with a parameter or a member. If you continue trying to use a type name as an identifier, expect that you will get the error message soon enough and you cannot progress.