无法从可转换类型初始化非const引用

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值有关.这不是这里的情况 - 有人可以解释一下吗?谢谢.

GMa*_*ckG 7

整数提升会产生右值.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参考.)