Если у меня есть пользовательский 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
.