c++ - 有没有办法有条件地为 C++ 范围循环选择不同的初始化列表?

标签 c++

我想重新排列这段代码:

if (x_can_be_true) {
  for (x : {false, true}) {
    do_work(x);
  }
} else {
  do_work(false);
}

所以 do_work 只被调用一次。

从概念上讲,我想这样做:

for (x : (x_can_be_true ? {false, true} : {false})) {
  do_work(x);
}

有什么建议可以真正编译该代码吗?

编辑: do_work 是现实世界问题的简化占位符。 它有很多行代码,它们依赖于前面几行中的许多参数。 该问题的目的是找到一种避免重复这么多行的模式。因为那不是好的编码习惯。 ;->

我可以把它变成一个有很多参数的函数。或使用参数 block 。但是……恶心。 ;->

最佳答案

怎么样

do_work(false);
if (x_can_be_true)
    do_work(true);

这等同于您的简单示例,但可能不是您真正尝试做的事情的解决方案。

关于c++ - 有没有办法有条件地为 C++ 范围循环选择不同的初始化列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54973821/

相关文章:

c++ - 检查更新(将远程 XML 文件与本地变量进行比较)

c++ - 理解 "const"在声明中的位置

c++ - 在 C++ 中拥有多个指向单个对象的指针的正确方法是什么?

c++ - 如何调用模板方法?

c++ - 如何使用 OpenCV 在 C++ 中实现高效的 im2col 函数?

c++ - 从 volatile uint8_t* 到 uint8_t* 的无效转换

c++ - IFileOperation::DeleteItems 在 Windows 8 上不要求确认(与 Windows 7 不同)

c++ - 变量 ' ' 周围的堆栈已损坏

c++ - 显式运算符 << 选择 'wrong' 重载

c++ - g++ 和 clang++ 对流输入和无符号整数的不同行为