哪些表达式回到的是左值
哪些表达式返回的是左值?
在哪能查到表达式的返回值是左值还是右值?还是应该说运算符的返回值是左值还是右值?
------解决方案--------------------
看标准文档最直接,在Expression中讲得很清楚。
要试验的话,用内建操作符&是最合适了。
C++0x里可以写两个重载的函数模板,一个参数是左值引用,一个参数是右值引用,然后用表达式作为参数去调用……好像比用&还麻烦。
void f( int x, int y )错的那个x++返回的是什么?返回的是右值?
{
int j = x = y;
int* p = &++x;
int* q = &( x++ ); //这个是错的。
int* pp = &( x>y ? x : y );
}
在哪能查到表达式的返回值是左值还是右值?还是应该说运算符的返回值是左值还是右值?
------解决方案--------------------
看标准文档最直接,在Expression中讲得很清楚。
要试验的话,用内建操作符&是最合适了。
C++0x里可以写两个重载的函数模板,一个参数是左值引用,一个参数是右值引用,然后用表达式作为参数去调用……好像比用&还麻烦。