数组和右值

  $ 4.2 / 1 - “左值或左值的类型   “阵列的N T”或“未知阵列   T“的界限可以转换为   “指向T的指针”的右值   result是指向第一个的指针   数组的元素。“ 我不知道如何在初始化/声明期间获得数组类型的rvalue?     
已邀请:
我不确定你在这种情况下通过“初始化/声明”引用了什么。在下文中,数组是prvalue
template<typename T> using alias = T;

int main() { return alias<int[]>{1, 2, 3}[0]; }
这可以通过具有类型
int[3]
decltype(alias<int[]>{1, 2, 3})
来验证。以这种方式动态创建数组最初并不打算工作,而是通过统一初始化的相关工作进入工作草案。当我意识到C ++ 0x工作草案中的某些段落不允许这种即时创建阵列临时工具的特殊情况而其他段落允许时,我向C ++委员会发送了一份缺​​陷报告,然后在此基础上海湾合作委员会的部分工作实施决定全力支持这一点。     
你不能得到一个数组类型的右值。数组只能是左值,只要它们在左值中使用,它们就会衰减为指向第一个元素的指针。
int array[10];
int * p = array; // [1]
[1]中的表达式
array
int (&)[10]
的左值,它被转换为
int *p
的rvalue,也就是说,n == 10 T == int的rvalue数组被转换为类型指针的左值T == INT。     
这是否有机会展示Array Rvalue?
int main(){
 int buf[10][10];

 int (*p)[10] = buf;

 int (*p2)[10] = p;      // LValue to Rvalue conversion of Array type 'p'
}
    

要回复问题请先登录注册