c++ - A if A else B 但只对 A 求值一次

标签 c++

有没有什么方便的方法来写表达式

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/

相关文章:

c++ - libjit 什么时候真正值得?

c++ - 调用函数时出错

C++ 从本地计算机获取 WMI 数组数据

c++ - 构建 ASP.NET Core 和 C++ 二进制文件的 Dockerfile

c++ - argc 是什么意思?

c++ - 带有Visual Studio Code的FLTK库

c++ - 如何对通用列表提取进行元编程以构建函数调用

c++ - 如何将动态多维数组传递给函数?

c++ - 访问线程内的主对话框变量 (MFC)

c++ - 如何理解cout的默认格式