There are many questions and answers for this, but I can\'t really find why we need to return by reference.
If we have (assume operator is already correctly ov
Returning by value does not prevent chaining. But if you return by value, you're returning a copy, which is generally not what you want in this case.