首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带空操作数的C++条件算子

带空操作数的C++条件算子
EN

Stack Overflow用户
提问于 2017-08-20 10:49:32
回答 1查看 960关注 0票数 3

我试图理解C++标准的以下摘录(ISO/IEC 14882:2003,更新版本基本上相同):

5.16条件算子 2如果第二个或第三个操作数的类型(可能是cv限定的)无效,则在第二和第三个操作数上执行lvalue-to-rvalue (4.1)、数组到指针(4.2)和函数到指针(4.3)的标准转换.

我倾向于认为,在这种情况下,当操作数是函数调用时,操作数的类型将被视为(尽管不是)函数返回类型。如果是这样的话,那就会产生一个空类型的例子。

我还设想,抛出表达式也可能在此上下文中具有类型void,这与抛出操作数的类型无关。这将是另一个例子。

我的两个假设正确吗?还有其他的案子吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2017-08-20 13:25:23

关于抛出,是的,没有结果,所以类型是空的,抛出操作数的类型是无关的。我不知道这有什么关系,所以这个问题看起来很奇怪。

关于函数,我不知道为什么您说如果操作数是函数调用,则操作数的类型不是函数返回类型。那还会是什么?在这里,操作数是一个函数(而不是函数调用),函数到指针的转换就会启动。

条件运算符的结果类型取决于其操作数的类型。我认为其中一个操作数无效的特殊语言是,条件运算符的结果是无效的,所以关于可能执行不同类型操作数转换的规则是不相关的。

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

https://stackoverflow.com/questions/45781301

复制
相关文章

相似问题

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