以下文章讨论了throw表达式的类型:在C++中,如果throw是一个表达式,它的类型是什么?.我想澄清一个更基本的问题:为什么应该throw是一个表达式而不是一个(非表达式)语句就像return在第一个位置一样?我的意思是,有人想写点什么auto x = throw std::runtime_error("Error message")吗?
Que*_*tin 11
如果throw是声明,则无法将其与条件运算符一起使用.
return success()
? computation()
: throw std::runtime_error("oops");
Run Code Online (Sandbox Code Playgroud)
注意:这可能会或可能不会在代码混淆之外使用.
编辑:一个有用的案例是C++ 11的严格constexpr函数,它只能包含一条指令.感谢@dyp的见解!