Elaborated type specifier syntax

1.0 class
1.0 struct
1.0 union
1.0 enum
1.1? ::
1.2? %nested_name_specifier
1.3 identifier
1 typename
1.1? ::
1.2 nested_name_specifier
1.3 identifier
1.3? template
1.3.1 template_name

Nested name specifier:

1 class_name
1 namespace_name
2 ::
3? 
3 template nested_name_specifier
3 nested_name_specifier