That's absolutely fine, and in fact it's very often how non-member operator<< and the like are implemented, to allow you to chain the operator.
The key thing to think about is object lifetime, and as you know the object is passed in by reference, it has to outlive the function call. This makes it safe to return the same reference.