I believe this to be a (minor) defect in the C++11 Standard. In [dcl.dcl] we have:
simple-declaration :
decl-specifier-seq opt init-declarator-list opt ;
The decl-specifier-seq can't be optional.
For instance the snippet below doesn't compile:
x;
If I'm correct here, then the beginning of paragraph §8.3/1 should also be altered:
From:
A list of declarators appears after an optional (Clause 7) decl-specifier-seq (7.1).
To:
A list of declarators appears after a decl-specifier-seq (7.1).
Too long for a comment
In clause 7, paragraph 3:
In a simple-declaration , the optional init-declarator-list can be omitted only when declaring a class (Clause 9) or enumeration (7.2), that is, when the decl-specifier-seq contains either a class-specifier , an elaborated-type-specifier with a class-key (9.1), or an enum-specifier . In these cases and whenever a class-specifier or enum-specifier is present in the decl-specifier-seq , the identifiers in these specifiers are among the names being declared by the declaration (as class-names , enum-names , or enumerators , depending on the syntax). In such cases, and except for the declaration of an unnamed bit-field (9.6), the decl-specifier-seq shall introduce one or more names into the program, or shall redeclare a name introduced by a previous declaration.
And in clause 7, paragraph 9
Only in function declarations for constructors, destructors, and type conversions can the decl-specifier-seq be omitted.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.