首页 > 解决方案 > 拒绝 C 规则“条件表达式不产生左值”的动机是什么?

问题描述

拒绝C规则的动机是什么a conditional expression does not yield an lvalue

换句话说:在 C 中,它是一个动机(究竟是什么?)not yield an lvalue。为什么在 C++ 中这种动机被拒绝(或重新考虑)?

标签: c++language-lawyerconditional-operatorlvalue

解决方案


C++ 有引用;C 没有。

如果不是以下规则,您将无法从条件运算符的调用中绑定 [mutable] 引用:

[expr.cond/5]如果第二个和第三个操作数是相同值类别的glvalues并且具有相同类型,则结果是该类型和值类别,如果第二个或第三个操作数是位域,则结果是位域,或者如果两者都是位域。


推荐阅读