为什么我们需要语法产生式基础说明符的最后两个定义?

Why do we need the last two definitions for the grammar production base-specifier?

[class.derived.general]/1 中,我们对 base-specifier 有以下定义:

碱基说明符:
attribute-specifier-seqopt class-or-decltype
属性说明符序列opt virtual 访问说明符opt class-或-decltype
属性说明符序列opt访问说明符virtualopt class-或-decltype

为什么我们需要上面的第二个第三个定义?为什么 virtual 在第二个定义中是必需的,而在第三个定义中是可选的?

Why do we need the second and the third definitions above?

语法糖。因此,class Derived: public virtual Baseclass Derived: virtual public Base 都是有效的。当需要虚拟继承时,比每年查找一次订单要好得多。

Why is the virtual required in the second definition while it's optional in the third?

请注意,第二个选项具有强制性 virtual,第三个选项具有强制性 access-specifier。因此,class Derived: virtual Baseclass Derived: public Base 都是有效的。并且它可以拥有上述优势,而不是将其定义为
属性说明符序列opt virtualopt 访问说明符opt class-or-decltype

也许可以用不同的方式来表述,但我想不出更好的方式来表达这两个方面。