If a function returns a value rather than a non-const reference, that return value is an rvalue. An rvalue cannot be on the left hand side of an assignment.

A pointer is not a reference - like an...