繁体   English   中英

const T& rf = T 的左值是身份转换吗?

[英]Is const T& rf = lvalue of T an identity conversion?

T t;
const T& rf = t; // #1

考虑上面显示的初始化#1 是身份转换吗? 换句话说, rf直接绑定到初始化表达式? 如果不是这样,#1 有多少标准转换,这些转换的名称是什么?

这是一种身份转换。 [over.ics.ref]/1 :

当引用类型的参数直接绑定到参数表达式时,隐式转换序列是恒等转换,除非参数表达式的类型是参数类型的派生类,在这种情况下,隐式转换序列是派生的 -到基础转换([over.best.ics])。 [...] 如果参数直接绑定到将转换函数应用于参数表达式的结果,则隐式转换序列是用户定义的转换序列,第二个标准转换序列要么是身份转换,要么,如果转换函数返回一个类型的实体,它是参数类型的派生类,派生到基类的转换。

(强调我的)

在您的情况下,参数类型与参数类型相同,因此参数类型既不是从参数类型派生的,也不需要用户定义的转换函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM