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

Jav*_*Man 5 c++ grammar

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

simple-declaration:
 decl-specifier-seq(optional)  init-declarator-list(optional);
Run Code Online (Sandbox Code Playgroud)

根据规范,只有构造函数,析构函数和类型转换函数才能没有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
Run Code Online (Sandbox Code Playgroud)

这里decl-specifier-seq是预期的可选项.但为什么在a simple-declaration,它也是可选的?