c++ - 拒绝 C 规则“条件表达式不产生左值”的动机是什么?
问题描述
拒绝C规则的动机是什么a conditional expression does not yield an lvalue
?
换句话说:在 C 中,它是一个动机(究竟是什么?)not yield an lvalue
。为什么在 C++ 中这种动机被拒绝(或重新考虑)?
解决方案
C++ 有引用;C 没有。
如果不是以下规则,您将无法从条件运算符的调用中绑定 [mutable] 引用:
[expr.cond/5]
:如果第二个和第三个操作数是相同值类别的glvalues并且具有相同类型,则结果是该类型和值类别,如果第二个或第三个操作数是位域,则结果是位域,或者如果两者都是位域。
推荐阅读
- c++ - 一个类中可以有多个 operator& 吗?
- formal-languages - 形式语言和编译器。30个矿脉问题
- java - ACTION_MEDIA_BUTTON 在尝试了几乎所有我能做的事情后没有调用接收器
- google-chrome - Nginx Round Robin 负载均衡 上游服务器不按顺序排列,chrome、firefox、IE浏览器之间的行为变化
- gitlab - 如何从 Gitlab 管道 YML 文件中包含 Jira 字段(测试存储库)
- amazon-web-services - Yaml 文件无法 lint
- typescript - 在打字稿中使用字符串而不是枚举
- semaphore - 当线程持有二进制信号量然后再次尝试获取它时会发生什么?
- swift - IBDesignable 自定义 NSControl 类 - Interface Builder 中的框架未调整大小
- r - 如何将R列表按行合并到data.frame中