gpt4 book ai didi

c++ - 在不知道函数参数的情况下使用 lambda 创建 std::function

转载 作者:行者123 更新时间:2023-12-02 20:29:28 25 4
gpt4 key购买 nike

我想创建一个std::function来自lambda ,在 template它将所需的 std::function 实例作为其参数:

template <class functionT>
functionT make_lambda() {
return [](/* ignore all args */){ std::cout << "my lambda\n"; };
}

然后使用不同的 aliases 调用该模板 std::function :

using function_no_args = std::function<void(void)>;
using function_args = std::function<void(int)>;

make_lambda<function_no_args>()(); // output: "my lambda"
make_lambda<function_args>()(999); // compile error

我怎样才能实现这个目标?

一些精度:

  • 我需要能够为 std::function 提供别名,在 traits 结构中定义它们,并将它们传递到我的代码的多个部分
  • 返回类型始终为void,只有参数可能会改变

最佳答案

只需使用带有参数包的通用 lambda 来吞咽并忽略可能提供给它的任何参数:

template <class functionT>
functionT make_lambda() {
return [](auto&&...){ std::cout << "my lambda\n"; };
}

关于c++ - 在不知道函数参数的情况下使用 lambda 创建 std::function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59347494/

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