有没有什么方便的方法来写表达式
val = A ? A : B;
其中 A 只会被评估一次?或者这是最好的(它只是丑陋):
auto const& temp = A;
val = temp ? temp : B;
澄清一下,A 和 B 不是
bool
类型的
最佳答案
使用 Elvis operator ,在某些 C++ 编译器中受支持:
val = A ?: B;
见 Conditionals with Omitted Operands在 gcc 的文档中。
编辑:这不是可移植的,例如在 MSVC 中不起作用。它从 2.95.3(2001 年 3 月)开始在 gcc 中工作,从 3.0.0 开始在 clang 上工作。
关于c++ - A if A else B 但只对 A 求值一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61375558/