xvalue上的下标的值类别
Value category of the subscript-expression on xvalue
来自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会编译此罚款。
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 矢量下标超出SFML游戏中的范围
- 如何在C++程序中使用下标数字?
- 一组值的零开销下标运算符
- 运行时错误:矢量下标超出范围:正在检查空集
- 如何重载下标运算符 [] 以引用 2d STL 数组?
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 矢量无效下标.SFML
- C++ IDE 不会推断/自动完成对模板类中的 std::array 下标表达式的成员访问
- 编译期间矢量下标超出范围
- C++ 调试断言失败 - 矢量下标超出视觉工作室的范围
- 有什么理由不扩展 std::set 以添加下标运算符吗?
- 在继承的模板类中使用下标 [] 运算符
- 对矢量来说是全新的.矢量下标超出范围
- 运算符重载多个任务的下标和赋值运算符
- 为什么函数的任何索引处的下标运算符在C++中总是返回1
- c++下标运算符到下级类向量
- C++十进制到十六进制(字符串下标超出范围)
- 创建结构体向量,表达式:向量下标超出范围
- 数组下标运算符 ([ ]) 对数组有什么作用?