How to overload unary & outside class?

You can overload the unary & operator inside a class as:

struct X
{
   void* operator &()
   {
      return this;
   }
};

so that it returns an address. How would you overload it outside of a class:

struct X
{
};

void* operator &(const X& x)
{
    //how?
}

Taking the address of the parameter would result in infinite recursion.


In C++11, there is template< class T > T* std::addressof(T& arg) .

std::addressof

You can also get the same function for C++03 from Boost Utility

链接地址: http://www.djcxy.com/p/73060.html

上一篇: 在班级以外重载操作员

下一篇: 如何超载一元和外部类?