c – 数组和右值

$4.2/1 – “An lvalue or rvalue of type
“array ofN T” or “array of unknown
bound of T” can be converted to an
rvalue of type “pointer to T.” The
result is a pointer to the first
element of the array.”

我不知道如何在初始化/声明期间获得数组类型的rvalue?

我不确定你在这个上下文中通过“初始化/声明”引用了什么.在下文中,数组是prvalue

template<typename T> using alias = T;

int main() { return alias<int[]>{1, 2, 3}[0]; }

这可以通过具有int [3]类型的decltype(别名< int []> {1,2,3})来验证.以这种方式动态创建数组最初并不打算工作,而是通过统一初始化的相关工作进入工作草案.当我意识到C 0x工作草案中的某些段落不允许这种即时创建阵列临时数的特殊情况而其他段落允许时,我向C委员会发送了一份缺​​陷报告,然后在GCC的基础上部分工作实施决定全力支持这一点.

https://stackoverflow.com/questions/3656726/array-and-rvalue

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c – 数组和右值