C++ 非类名C++;11是简单模板id的类型名称?

C++ 非类名C++;11是简单模板id的类型名称?,c++,templates,c++11,C++,Templates,C++11,在C++11标准中,它使用以下语法描述类型名和类名: type-name: class-name enum-name typedef-name simple-template-id <--- HERE class-name: identifier simple-template-id 类型名称: 类名 枚举名 类型定义名 简单模板id这是可能的,例如: template <typename T> using Pt

在C++11标准中,它使用以下语法描述
类型名
类名

type-name:
    class-name
    enum-name
    typedef-name
    simple-template-id        <--- HERE

class-name:
    identifier
    simple-template-id
类型名称:
类名
枚举名
类型定义名

简单模板id这是可能的,例如:

template <typename T> using Ptr = T *;

Ptr<int> p = 0;
使用Ptr=T*的模板;
Ptr p=0;

当你引用标准时,通常最好包括章节号或段落名称(章节右上角的
[something.something]
),以便其他人可以找到你所说的内容,以防他们需要/想要更多的上下文。@JerryCoffin:有一个“语法产品索引”在标准的背面,给出了正文中提到的特定语法的页码,以及其在附件中的位置,并给出了一份语法摘要——但是,我认为答案无法在特定章节中找到(或者至少在提到这些语法的地方找不到)。这是一个“别名模板”,14.5.7[临时别名]。这在C++11中是新的,事实上,C++03没有将简单模板id作为类型名称的生成规则,只包含类名。有趣的是,
simple template id
并没有添加到
typedef name
中以涵盖这一点。也许有一些语义适用于
typedef name
,而不适用于alias模板。