我正在寻找标准的规范性参考。
我们可以声明一个引用类型的变量,如下所示:
int a = 5;
int &b = a;
正式地,a
的类型为int
,但b
的类型为int&
。那么为什么我们可以使用int&
初始化int
?我正在寻找这些类型的标准转换,但似乎没有。
答案 0 :(得分:4)
您可以使用int&
初始化int
,因为标准说:
声明为
T&
或T&&
的变量,即“类型T
的引用”(8.3.2),应由对象初始化, 或类型T
的函数或可转换为T
的对象。
(N3936,8.5.3 / 1)
没有"标准转换"从T
到T&
,以及
当引用类型的参数直接(8.5.3)绑定到参数表达式时,隐式转换 sequence是标识转换,除非参数表达式的类型是派生类 参数类型,在这种情况下,隐式转换序列是派生到基础的转换(13.3.3.1)。
(N3936,13.3.3.1.4 / 1;强调我的)