I have overloaded the operator + by Integer operator+(Integer & a, Integer & b). But when I do a=b+c+d, it gives the error of invalid operands to binary expression. But by adding const to the parameters, no more errors. Why this happens? 
            Asked
            
        
        
            Active
            
        
            Viewed 993 times
        
    1
            
            
         
    
    
        Bruce Jinru Su
        
- 189
- 6
- 14
1 Answers
7
            b + c + d generates a temporary for the result of b + c. A reference to that temporary is then passed to the second call to operator+().
Only const references can be bound to temporaries.
For further discussion, see How come a non-const reference cannot bind to a temporary object?
 
    