首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lvalue参考绑定

Lvalue参考绑定
EN

Stack Overflow用户
提问于 2014-11-13 04:32:53
回答 1查看 95关注 0票数 1

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

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

  • 是一个lvalue (但不是位字段),而“cv1 T1”与“cv2 T2”或
  • 具有类类型(即T2是类类型),其中T1与T2无关,可以转换为“cv3 T3”类型的lvalue,其中“cv1 T1”与“cv3 T3”兼容。

第二种情况是否意味着初始化器表达式是class-type和lvalue

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-13 16:06:40

该条款规定:

有一个类类型

所以它必须是一个类类型。但是,文档中的示例显示,它不必是一个lvalue,以我们所具有的代码示例的选定部分为例:

代码语言:javascript
复制
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”类型的lvalue,其中“cv1 T1”与“cv3 T3”兼容。

在这种情况下也适用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26901376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档