当试图在条件(三元)操作符中使用逗号操作符进行日志记录时,我注意到了一些奇怪的东西。下面是一个人为的例子:const a = 2;a > b ?I expect this to log and evaluate to a但我却遇到了这样的事情:根据,条件运算符接受两个表达式作为三元运算符的“if”和“of”情况,而理论上是一个表达式,
逗号运算</e
我的代码使用三元运算符检查条件,然后返回指向c-string常量的指针或抛出异常。 奇怪的是,只有当我从三元运算符的一个路径执行throw时,编译才会失败。如果我在两边都放了一个字符串常量,所有东西都会编译。 // this line gives no compilation error
auto str = condition ?"foo" : throw std::runtime_error{"ba