首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >三值运算符中的抛出表达式

三值运算符中的抛出表达式
EN

Stack Overflow用户
提问于 2012-09-09 09:10:24
回答 1查看 260关注 0票数 0

根据ISO/IEC 14882:2011,我们不能在三元操作符的第二个和第三个操作数中使用抛出表达式:

5.16条件算子expr.cond 2如果第二个或第三个操作数的类型为void,则在第二和第三个操作数上执行lvalue-to-rvalue (4.1)、数组到指针(4.2)和函数到指针(4.3)的标准转换,并且下列操作数之一保持不变:-第二个或第三个操作数(但不是两个操作数)是抛出表达式(15.1);结果是另一个操作数的类型,是一个prvalue。-第二个操作数和第三个操作数都有虚空类型;结果为void类型,是一个prvalue。注意:这包括两个操作数都是抛出表达式的情况。-end注记

为什么Comeau编译器和gcc都允许这段代码?

代码语言:javascript
复制
int main()
{
   true ? throw 0 : throw 1;
}
EN

回答 1

Stack Overflow用户

发布于 2012-09-09 09:13:34

仔细阅读,标准并没有禁止它,它甚至在注释中提到它。

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

https://stackoverflow.com/questions/12337868

复制
相关文章

相似问题

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