【发布时间】:2014-05-29 19:57:09
【问题描述】:
void func(int **&&const x)
{
*(*x) = 32;
}
void main()
{
int *pi = new int{ 64 };
printf("x : %d\n", *pi);
func(&pi);
printf("x : %d\n", *pi);
}
Outputs:
x : 64
x : 32
当使用指向右值 const 的指针时,该值在函数内仍然是可修改的。使用 **&&const 作为函数参数是否有任何目的。该代码是使用 VC2013 和 C++ 编译器于 2013 年 11 月编译的。
编辑:我确实收到警告“使用过时:引用的限定符被忽略”,但完全编译失败可能会更好。感谢您的回答!
【问题讨论】:
-
允许改变值,但不能改变第一级指针。
-
一个不错的编译器报告:'const' 限定符不能应用于'int**&&''
-
x当然不是“指向右值 const 的指针”。如果它是合法的,那将类似于“指向指针的指针的 const 右值引用”——但 const 引用是无稽之谈。 -
如果您发现这些答案之一有用,您应该考虑accepting one of them。