![](/img/trans.png)
[英]Passing an lvalue to rvalue template parameter won't allow me to declare const T& var
[英]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.