$4.2/1 -“数组ofN T”或“T的未知界数组”的值或rvalue可以转换为“指向T的指针”类型的r值,结果是指向数组的第一个元素的指针。
我不确定如何获得数组类型的rvalue,而不是在初始化/声明期间?
发布于 2012-02-04 10:17:56
我不知道在这种情况下,“初始化/声明”指的是什么。在下面的内容中,数组是一个prvalue
template<typename T> using alias = T;
int main() { return alias<int[]>{1, 2, 3}[0]; }这可以由具有decltype(alias<int[]>{1, 2, 3})类型的int[3]进行验证。以这种方式动态创建数组最初并不是为了工作,而是通过统一初始化相关工作的方式滑入工作草案。当我意识到C++0x工作草案中的一些段落不允许在运行中创建数组临时人员的一些特殊情况,而其他段落允许这样做时,我向C++委员会发送了一份缺陷报告,该委员会在GCC的部分工作实现的基础上决定完全支持这一点。
发布于 2010-09-07 07:53:11
无法获得数组类型的rvalue。数组只能是lvalue,每当它们在lvalue中使用时,它们就会衰减到指向第一个元素的指针。
int array[10];
int * p = array; // [1]表达式array in 1是int (&)[10]类型的lvalue,该值被转换为int *p类型的rvalue,即N==10 T==int的rvalue数组被转换为指向T==int的类型指针的值。
发布于 2010-09-07 08:04:04
这会不会成为展示阵列价值的机会?
int main(){
int buf[10][10];
int (*p)[10] = buf;
int (*p2)[10] = p; // LValue to Rvalue conversion of Array type 'p'
}https://stackoverflow.com/questions/3656726
复制相似问题