C++ 非类名C++;11是简单模板id的类型名称?
在C++11标准中,它使用以下语法描述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
类型名
和类名
:
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模板。