led*_*ter 3 c++ rvalue-reference language-lawyer xvalue c++14
从5.2.1.1开始:
表达式
E1[E2](根据定义)与*((E1)+(E2))[...]相同,除了在数组操作数的情况下,如果该操作数是左值,则结果为左值,否则为x值.
但是,使用以下代码:
struct S
{
int arr[5];
};
int main()
{
int &&r = S().arr[0];
}
Run Code Online (Sandbox Code Playgroud)
GCC和Clang都抱怨"rvalue引用不能绑定到lvalue int".
我误解了什么?据我所理解的S()是rvalue,S().arr是xvalue,所以也S().arr[0]应该是xvalue,并且应该能够绑定到rvalue refs.
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |