gpt4 book ai didi

c++ - 在 C++ 中返回两个(或多个)lambda 表达式之一

转载 作者:行者123 更新时间:2023-12-04 12:13:56 30 4
gpt4 key购买 nike

由于 C++ lambdas 具有唯一的未命名类型,因此这样的操作不起作用:

auto select_lambda() {
if (someCondition())
return []() { return 1; };
else
return []() { return 2; };
}
它们可以包装成 std::function :
std::function<int()> select_lambda() { /* same body */ }
但这有很大的开销。有没有更好的方法来实现类似的目标?我有一些初步的想法,但我还没有开始工作。

最佳答案

如果您的 lambda 表达式不需要捕获任何内容,那么您可以添加 +将它们转换为常规函数指针:

auto select_lambda() {
if (someCondition())
return +[]() { return 1; };
else
return +[]() { return 2; };
}
如果您需要捕获 lambdas 然后 std::function似乎是最好的方法。

关于c++ - 在 C++ 中返回两个(或多个)lambda 表达式之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67644411/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com