Created on 2019-07-29.00:00:00 last changed 64 months ago
According to 6.1 [basic.pre] paragraph 4,
A name is a use of an identifier (5.10 [lex.name]), operator-function-id (12.4 [over.oper]), literal-operator-id (12.6 [over.literal]), conversion-function-id (11.4.8.3 [class.conv.fct]), or template-id (13.3 [temp.names]) that denotes an entity or label (8.7.6 [stmt.goto], 8.2 [stmt.label]).
Since typedefs are neither entities nor labels, it appears that a typedef-name is not a name.
There is an additional discrepancy regarding alias templates. According to 6.1 [basic.pre] paragraph 3, templates (including, presumably, alias templates) and their specializations are entities. However, the note in 13.3 [temp.names] paragraph 6 says,
[Note: A simple-template-id that names a class template specialization is a class-name (11.3 [class.name]). Any other simple-template-id that names a type is a typedef-name. —end note]
Thus an alias template specialization both is and is not an entity.
History | |||
---|---|---|---|
Date | User | Action | Args |
2019-07-29 00:00:00 | admin | create |