If I have a user-defined operator+()
as in:
class A
{
public:
A operator+(A)
{
return A();
}
};
Then the following works as expected:
A a = A() + A();
but g++-4.7 gives an error message on the following:
A a = (A()) + A();
The error message in particular is error: no match for ‘operator+’ in ‘+A()’
.
It looks like the (A())
is being ignored in the expression.
My question is: is A a = (A()) + A();
supposed to compile and if not, why not?
Note: this happened to me when I did #define X (Identity())
and then tried doing X + X
.