This is an artificial restriction.
Compiler optimizations aside, this
acts as a hidden pointer parameter to member functions. (Yes, it could sit in a register, but so can regular pointer parameters).
There's no reason this couldn't have worked. My best guess is that nobody thought it would be useful, so they made this
a prvalue, which essentially prevents taking its address.