为什么标准C ++定义Decl-Specifier-Seq可选

时间:2014-05-12 15:09:14

标签: c++ grammar

为什么在标准c ++语法中,decl-specifier-seq下的simple-declaration是可选的?

simple-declaration:
 decl-specifier-seq(optional)  init-declarator-list(optional);

根据规范,只有构造函数,析构函数和类型转换函数才能没有decl-specifier-seq(第9.2节或第7节dcl.dcl)。但是所有这三个函数声明都是一个类的成员,因此它们应该由与simple-declaration分开的另一个语法规则定义:

member-declaration:
 decl-specifier-seq(optional) member-declarator-list(optional);
 function-definition ;(optional)
 ::(optional) nested-name-specifier template(optional) unqualified-id ;
 using-declaration
 static_assert-declaration
 template-declaration

此处decl-specifier-seq是预期的可选项。但是为什么在simple-declaration中,它也是可选的?

0 个答案:

没有答案