我想重新排列这段代码:
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/