引用类型和文字类型

时间:2015-07-20 07:14:47

标签: c++ c++11 language-lawyer

我在标准中查找了引用类型的定义,但我找不到任何内容。 引用类型作为<html> <head> </head> <body> <script> var myFunction = function() { document.write("Hello world!"); } myFunction(); </script> </body> </html> 等对象类型的天真解释失败,因为根据标准[basic.types] 10.3:

  

如果类型是:[...]引用类型

,则类型是文字类型

但是以下静态断言无法编译(在MSVC2015RC中):

int &

引用类型的定义是什么?

2 个答案:

答案 0 :(得分:3)

C ++ 11标准定义了§8.3.2[dcl.ref]中的引用:

  

1在T D声明中,其中D具有任何一种形式

& attribute-specifier-seqopt D1
&& attribute-specifier-seqopt D1
  

和声明T D1中的标识符类型是   “derived-declarator-type-list T”,然后是D标识符的类型   是“T的derived-declarator-type-list引用。”可选   attribute-specifier-seq属于引用类型。 CV-合格   除非引入了cv限定符,否则引用的格式不正确   通过使用typedef(7.1.3)或模板类型参数   (14.3),在这种情况下,忽略了cv限定符。 [...]

     

2使用&amp;声明的参考类型被称为   左值引用,以及使用&amp;&amp ;;声明的引用类型是   称为右值参考。左值参考和右值参考   是不同的类型。除非明确指出,否则它们是   语义等价,通常称为参考。

简单来说,引用类型是声明为对其他类型的引用的类型。不过,关于他们的行为还有很多话要说。

答案 1 :(得分:2)

GCCClang中编译就好了。您的编译器可能存在错误的实现。