Fumitoshi UKAI <[EMAIL PROTECTED]> writes:

> Hmm, maybe this would be what the upstream auther wants.

It's hard to know what upstream wants given a bug in the compiler and
a bug in the code.  I think ns::operator+ would work just as well as
::operator+ due to argument-dependent name lookup ("koenig lookup").

> I tried this and it seems that __GNUC__ >= 4 would be required 
> for friend line.

If ns::operator+ is OK then the following should work with gcc-3 and
gcc-4:

namespace ns {
        class A;
        A operator+(const A& x, const A& y);
};
class ns::A {
 public:
        A(int j) { i = j; };
 private: int i;
         friend A ns::operator+(const A& x, const A& y);
};
using namespace ns;
A ns::operator+(const A& x, const A& y) {
        return A(x.i + y.i);
}

However if this is code within a library then switching from
::operator+ to ns::operator+ would be an ABI change.

-- 
Philip Martin


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to