[dcl.emum] / 4: 如果enum-head-name包含嵌套名称说明符,则不应该 以decltype-specifier和封闭的enum-specifier开头 opaque-enum-declaration应指……
我相信这个段落与下面的简单片段有某种关系。
它与该片段无关,因为枚举说明符 enum E { i = 1 } 不包含嵌套名称说明符。
enum E { i = 1 }
请注意两者 S::E::i 和 S::i 以下是enum-head-names
S::E::i
S::i
那些不是枚举头名。 enum-head-names只在enum-head中,只在enum-specifiers中。这些只是qualified-id,它由一个嵌套名称说明符和一个命名枚举器的标识符组成。
enum-specifier的一个示例,其enum-head-name确实包含嵌套名称说明符,并且引用的规则适用于:
struct S { enum E : int; // ^^^^^^^^^^^^ opaque-enum-declaration }; enum S::E : int { i = 1 }; // ^^^ nested-name-specifier // ^^^^ enum-head-name // ^^^^^^^^^^^^^^^ enum-head // ^^^^^^^^^^^^^^^^^^^^^^^^^ enum-specifier