在C ++ 11标准中,它使用以下语法描述type-name
和class-name
:
type-name:
class-name
enum-name
typedef-name
simple-template-id <--- HERE
class-name:
identifier
simple-template-id
我的问题是关于simple-template-id
type-name
的直接后裔。
是否有可能simple-template-id
是type-name
但不是class-name
?
例如,如果foo<bar>
命名一个类型,它是否可以是非类类型?
(如果答案是否定的,是否还有其他原因我错过了为什么simple-template-id
会在type-name
下重复?)
答案 0 :(得分:5)
有可能,例如:
template <typename T> using Ptr = T *;
Ptr<int> p = 0;