New context-dependent keywords are introduced into a program by typedef, namespace, class, enumeration, and template declarations.
typedef-name: identifier
namespace-name: identifier namespace-alias namespace-alias: identifier
class-name: identifier simple-template-id
enum-name: identifier
template-name: identifier
Note that a typedef-name naming a class is also a class-name ([class.name]).