【发布时间】:2019-10-29 01:19:59
【问题描述】:
我遇到了这种情况。假设我有一段代码,我想控制它的返回方式:
bool foo() {
auto doSomething1 = []() {
return true;
}
auto doSomething2 = []() {
// execute something but not return
}
auto finalLambda = condition ? doSomething1 : doSomething2
if (case1) {
finalLambda()
}
if (case2) {
finalLambda()
}
... ...
return true;
}
这是实现此目的的有效(好)方法吗? doSomething1 返回,但 doSomething2 不返回。
【问题讨论】:
-
从您的示例中不清楚为什么您需要一个 lambda。你不能只执行 if 语句中的所有内容吗?
-
另外,您使用的至少是 C++17,还是更早的版本?
-
@Chipster 是的,我可以在每个 if 语句中执行。但是在那种情况下,如果有case1,case2...case20,我会复制很多代码。
-
@Chipster 是 c++17
-
我想要实现这一点,我必须将其模板化,因为我需要在编译期间实现这一点......