Jul*_*n-L 3 c++ const reference type-conversion
我无法从可转换类型T2 初始化非const引用到T1类型.但是,我可以使用const引用.
long l;
const long long &const_ref = l; // fine
long long &ref = l; // error: invalid initialization of reference of
// type 'long long int&' from expression of type
// 'long int'
Run Code Online (Sandbox Code Playgroud)
我遇到的大多数问题都与无法分配给非const引用的r值有关.这不是这里的情况 - 有人可以解释一下吗?谢谢.
整数提升会产生右值.long可以提升为a long long,然后绑定到const引用.就像你做了:
typedef long long type;
const type& x = type(l); // temporary!
Run Code Online (Sandbox Code Playgroud)
相反,如你所知,rvalue不能绑定到非const引用.(毕竟,没有实际long long参考.)