On 4/9/12 9:37 PM, Jonathan M Davis wrote: > S(1) is a temporary just like the value returned by foo. Why on earth would it > be an lvalue. It represents neither a variable nor a memory address. Same here. Blaming rvalueness of temporaries for this matter would be a mistake. The problem is elsewhere. Please don't revert the right decision. Thanks, Andrei