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.

Edit
Report