【发布时间】:2018-04-20 08:44:45
【问题描述】:
如果我正确阅读implicit conversions:
左值到右值的转换
任何非函数、非数组类型 T 的泛左值都可以隐式转换为相同类型的纯右值。 [..]
除非在未计算的上下文中遇到(在 sizeof、typeid、noexcept 或 decltype 的操作数中),此转换使用原始的 glvalue 作为构造函数参数有效地复制构造一个 T 类型的临时对象,并且该临时对象对象作为纯右值返回。
那为什么不行呢?
int* iptr = nullptr;
int*&& irr = iptr; // Cannot bind lvalue to rvalue reference
int* 类型应该已经通过临时隐式转换为相同类型的纯右值 - 因此绑定到右值引用没有问题。
【问题讨论】:
标签: c++ language-lawyer rvalue-reference lvalue lvalue-to-rvalue