为什么静态成员函数需要根据§13.3.1/ 4具有隐式对象参数?

Mao*_*Mao 6 c++ overloading language-lawyer c++11

在§13.3.1/ 4(N3337)中,您将找到以下内容:

对于静态成员函数,隐式对象参数被认为与任何对象匹配(因为如果选择该函数,则丢弃该对象).

§9.4.1/ 2有这样的断言:

静态成员函数没有this指针.

那么,静态成员函数的隐式对象参数的目的是什么?

rav*_*avi 0

以下是标准的描述,这意味着隐式对象参数用于重载目的。

在重载决议开始之前,通过名称查找和模板参数推导选择的函数将组合起来形成候选函数集(确切的标准取决于重载决议发生的上下文)。

如果任何候选函数是成员函数(静态或非静态),但不是构造函数,则将其视为具有额外参数(隐式对象参数),该参数表示调用它们的对象并出现在第一个函数之前的实际参数。

类似地,调用成员函数的对象作为隐含对象参数添加到参数列表中

对于类 X 的成员函数,隐式对象参数的类型受成员函数的 cv 限定和 ref 限定影响。

对于静态成员函数,隐式对象参数被认为与任何对象匹配:不检查其类型,也不尝试对其进行转换序列