Если у меня есть пользовательский operator+(), как в:
class A
{
public:
A operator+(A)
{
return A();
}
};
Затем выполняется следующее:
A a = A() + A();
но g++ - 4.7 выводит сообщение об ошибке:
A a = (A()) + A();
В частности, сообщение об ошибке error: no match for ‘operator+’ in ‘+A()’.
Похоже, что в выражении (A()) игнорируется.
Мой вопрос: есть A a = (A()) + A();, который должен компилироваться, а если нет, то почему?
Примечание: это произошло со мной, когда я сделал #define X (Identity()), а затем попытался сделать X + X.