哪些表达式回到的是左值

哪些表达式返回的是左值?
void f( int x, int y )
{
    int j = x = y;
    int* p = &++x;
    int* q = &( x++ ); //这个是错的。
    int* pp = &( x>y ? x : y );
}
错的那个x++返回的是什么?返回的是右值?

在哪能查到表达式的返回值是左值还是右值?还是应该说运算符的返回值是左值还是右值?

------解决方案--------------------
引用:
Quote: 引用:

http://www.oschina.net/question/234345_52587

用&试也太累了吧?没有什么直接就能看出来的方法么?


看标准文档最直接,在Expression中讲得很清楚。
要试验的话,用内建操作符&是最合适了。

C++0x里可以写两个重载的函数模板,一个参数是左值引用,一个参数是右值引用,然后用表达式作为参数去调用……好像比用&还麻烦。