正式差异T,T&和T&&

时间:2014-09-30 04:51:27

标签: c++ reference

我正在寻找标准的规范性参考。

我们可以声明一个引用类型的变量,如下所示:

int a = 5;
int &b = a;

正式地,a的类型为int,但b的类型为int&。那么为什么我们可以使用int&初始化int?我正在寻找这些类型的标准转换,但似乎没有。

1 个答案:

答案 0 :(得分:4)

您可以使用int&初始化int,因为标准说:

  

声明为T&T&&的变量,即“类型T的引用”(8.3.2),应由对象初始化,   或类型T的函数或可转换为T的对象。

(N3936,8.5.3 / 1)

没有"标准转换"从TT&,以及

  

当引用类型的参数直接(8.5.3)绑定到参数表达式时,隐式转换   sequence是标识转换,除非参数表达式的类型是派生类   参数类型,在这种情况下,隐式转换序列是派生到基础的转换(13.3.3.1)。

(N3936,13.3.3.1.4 / 1;强调我的)