P1787中一组非静态成员函数是否可以重载的替代规则

The alternative rule in P1787 for whether a set of non-static member functions can be overloaded

看完P1787,我对这个例子中的注释有点迷惑。即:

struct X {
  static void f();
  void f() const;  // error: redeclaration
  void g();
  void g() const;  // OK
  void g() &;      // error: redeclaration
};

显然,如果按照当前标准 over.load,它们是无效的重载声明。但是,该子条款已在 P1787 中删除。
根据P1787中的说法,我可以理解第二次声明name f后的注释,因为第一次声明和第二次声明是对应的,他们声明了同一个实体,但是,他们违反了以下规则:

For any two declarations of an entity

If one declares it to be a variable or function, the other shall declare it as one of the same type.

坦率地说,我无法理解最后声明名称 g 后的评论。 IIUC,name g 的这三个声明不对应。由于以下规则:

Two declarations correspond if they (re)introduce the same name, both declare constructors, or both declare destructors, unless:

  • [...]
  • each declares a function or function template, except when
  • both declare functions with the same parameter-type-list[Footnote: An implicit object parameter ([over.match.funcs]) is not part of the parameter-type-list. — end footnote], equivalent ([temp.over.link]) trailing requires-clauses (if any, except as specified in [temp.friend]), and, if both are non-static members, the same cv-qualifiers (if any) and ref-qualifier (if both have one)

尽管它们具有相同的参数类型列表,但它们都是非静态成员并且没有相同的 cv-qualifiers 和 ref-qualifier,因此它们'不是相应的声明。我找不到任何规则说 g 的此类声明在 P1787 中格式不正确,那么如何解释评论?

ref-qualifier 只需相同"(如果两者都有)".

如果只有一个声明有 ref 限定符而另一个没有,则该措辞暗示两个声明对应,假设所有其他条件都满足。

在提供的示例中,这意味着 void g() &;void g(); 的重新声明。