右值引用中的类型更改

Type change in rvalue reference

本文关键字:类型 引用      更新时间:2023-10-16

我可以知道为什么这段代码是有效的。谢谢。

  double i=5;//int i=5 will invalidate this piece of code
    int && r1=i;
    std::cout<<r1<<std::endl;

[dcl.init.ref]/1 声明为T&T&&的变量,即"对类型T的引用"(8.3.2(,应由类型T的对象或函数或可以转换为T的对象初始化。

[dcl.init.ref]/5 对类型"cv1 T1"的引用由类型"cv2 T2"的表达式初始化,如下所示:

(5.2.2.2( -- 如果T1是非类类型,则创建类型为"cv1 T1"的临时变量,并从初始值设定项表达式进行复制初始化 (8.5(。然后将引用绑定到临时引用。