繁体   English   中英

左值引用绑定

[英]Lvalue reference binding

我对N3797::8.5.3/5 [dcl.init.ref]措词有疑问:

类型“ cv1 T1”的引用由类型“ cv2 T2”的表达式初始化,如下所示:

—如果引用是左值引用和初始值设定项表达式

  • 是左值(但不是位字段),并且“ cv1 T1”与“ cv2 T2”参考兼容,或者

  • 具有类类型(即T2是类类型),其中T1与T2无关,并且可以转换为类型为“ cv3 T3”的左值,其中“ cv1 T1”与“ cv3引用兼容” T3”

第二种情况是否意味着初始值设定项表达式既是class类型又是lvalue

该条款说:

具有类类型

所以它必须是一个类类型 该文档后面的示例表明,尽管不一定要是左值,但采用代码示例的选定部分,我们可以:

struct A { };
struct B : A { operator int&(); } b;

int& ir = B(); // ir refers to the result of B::operator int&

B()不是左值,但正如8.5.3/5

可以转换为类型“ cv3 T3”的左值,其中“ cv1 T1”与“ cv3 T3”具有参考兼容性

在这种情况下适用。

暂无
暂无

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

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