为什么.*运算符不能在c ++中重载?

Inv*_*tus 2 c++ operator-overloading

我发现这里的一些帖子讨论了运算符重载和运算符,这些运算符不能在c ++ . :: .* sizeof等中重载.但我无法找到确切的细节或原因,为什么要.*避免?你们中的很少人可能会把它作为重复投票,但如果我得到关于我想要的那些链接的详细信息,我会非常高兴:)

Alo*_*ave 8

马的口中:

运算符.(点)原则上可以使用与 - >相同的技术重载.但是,这样做可能会导致关于操作是针对对象重载.还是对象所引用的对象的问题,.例如:

class Y {
public:
    void f();
    // ...
};

class X {   // assume that you can overload .
    Y* p;
    Y& operator.() { return *p; }
    void f();
    // ...
};

void g(X& x)
{
    x.f();  // X::f or Y::f or error?
}
Run Code Online (Sandbox Code Playgroud)

这个问题可以通过几种方式解决.在标准化的时候,哪种方式最好是不明显的.

AFAIU同样的理由适用 .*