In the first case, this is a pure rvalue usage. In the second case, due to the assignment, you're using it as an lvalue, but then, due to the print, turing the resulting expression back into an rvalue. This double conversion seems to be the root of your problems.
I was expecting it to return '', since that's what the
assignment operator usually does. As soon as you introduce the lvalue-function angle, I think you're playing with fire.