xvalue上的下标的值类别

Value category of the subscript-expression on xvalue

本文关键字:下标 xvalue      更新时间:2023-10-16

来自5.2.1.1:

表达式 E1[E2]*((E1)+(E2)) [...]相同(根据定义),除了在数组操作数的情况下,结果是lvalue,如果该操作数为lvalue,否则xvalue否则。

但是,具有以下代码:

struct S
{
    int arr[5];
};
int main()
{
    int &&r = S().arr[0];
}

GCC和Clang都抱怨" RVALUE参考不能与lvalue int结合"。

我误解了什么?据我了解, S()是rvalue, S().arr是xvalue,因此 S().arr[0]也应该是xvalue,并且应该能够绑定到rvalue refs。

您是正确的,因为您引用了。S().arr[0]是DR 1213的XVALUE,因此您应该能够绑定RVALUE的引用。

这是GCC错误79832。请注意,Clang Head会编译此罚款。