与标准中隐式此参数的定义相矛盾

Contradicting definition of implicit this parameter in the standard

我正在学习 C++ 中的 classes。我从标准中得出across以下声明:

During overload resolution, non-static cv-qualified member function of class X is treated as a function that takes an implicit parameter of type lvalue reference to cv-qualified X if it has no ref-qualifiers or if it has the lvalue ref-qualifier. Otherwise (if it has rvalue ref-qualifier), it is treated as a function taking an implicit parameter of type rvalue reference to cv-qualified X.

上面的语句似乎暗示对于 class Xconst 限定非静态成员函数将具有类型 const X& 的隐式参数。

不过后来我也来了across:

The type of this in a member function of class X is X* (pointer to X). If the member function is cv-qualified, the type of this is cv X* (pointer to identically cv-qualified X). Since constructors and destructors cannot be cv-qualified, the type of this in them is always X*, even when constructing or destroying a const object.

所以根据上面的第二个引用,class X 的 const 限定非静态成员函数的隐式 this 参数具有类型 const X*.

我的问题是为什么会有这样的差异。我的意思是在 const 限定的非静态成员函数的重载解析期间,为什么隐式参数被视为 const X& 而不是简单的 const X* 这似乎是 this 的实际类型。

隐式对象参数与​​this不同。 this 是一个指向调用成员函数的对象的指针,而隐式对象参数是成员函数的想象的第一个参数,它在成员函数调用中传递给对象表达式( [ 剩下的部分) =12=] 在成员访问表达式中)等应该是一个引用参数。

为隐式对象参数使用指针是没有意义的。这将使得不可能在对象表达式的值类别上重载函数。如果成员函数是 && 限定的,则隐式对象参数是右值引用,因此如果对象表达式是右值重载决策,则可以使用 & 限定的成员函数正确重载。

所以隐式对象参数在您的示例中是 const T&,但是 this 的类型是 const T*。没有矛盾。