
On Jan 8, 2007, at 11:32 AM, Tobias Schwinger wrote:
Doug Gregor wrote:
TR1 says...
Given an rvalue f of type F and values t1, t2, ..., tN of types T1, T2, ..., TN, respectively, the type member is the result type of the expression f(t1, t2, ...,tN). The values ti are lvalues when the corresponding type Ti is a reference type, and rvalues otherwise.
Sorry - it seems I missed that last part of the sentence, somehow (maybe by looking at the wrong version?).
It's likely that you were looking at an older draft of TR1. We had originally said that everything was an lvalue. We later realized that making them rvalues by default, with references signifying lvalues, gave us a more functional result_of that was actually easier to deal with. The final TR1 draft and the C++0x draft have the revised wording I quoted. Cheers, Doug