In the following example:
class A {
private: double content;
public:
A():content(0) {}
A operator+(const A& other) {
content += other.content;
return *this;
}
void operator=(const A& other) {
content = other.content;
}
};
A
is a simple wrapper for a double for which the +
and =
operators have been overloaded. In the following use:
int main(int argc, char *argv[]) {
A a, b, c;
(a+b) = c ; // Why is this operation legal?
}
Why does (a+b) = c
compile? I would like to know why this statement is legal, because the result of (a+b)
must be an rvalue
. I am not returning a reference from operator+
.