右值引用中的类型更改
Type change in rvalue reference
我可以知道为什么这段代码是有效的。谢谢。
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(。然后将引用绑定到临时引用。
相关文章:
- 我想将一个对T类型的非常量左值引用绑定到一个T类型的临时值
- 将成员函数的返回类型引用到C++中的自定义类
- 非类型引用参数可以在运行时修改,这是否意味着模板可以在运行时实例化?
- C++:类类型引用运算符=用法
- 将 const 类型引用对象注册为类成员对象C++
- 错误:绑定到类型引用会丢弃限定符
- 如果作为基类型引用传递,派生类型会解构吗
- 未分配返回未定义对象类型引用的 C++ 函数的返回值时会发生什么情况
- 类型引用的初始化无效
- C++ 从函数返回多个类型引用并将它们强制转换为我们需要的类型
- 函数常量返回类型:类型引用的初始化无效
- 将类型的嵌套类型引用为类模板的参数的问题
- 与返回类型(引用、常量引用)混淆
- 调用具有const键类型引用的std::指针集的count方法
- 返回运算符类型=-引用或值
- 非类型引用形参/实参
- c++中定义不同类型引用的区别
- 为什么返回类型引用输出流
- 非类型(引用)模板参数和链接
- 类型引用的初始化无效