使用lambda创建std :: function而不知道函数的参数

问题描述 投票:1回答:2

我想在std::function中以所需的std::function实例作为其参数的lambda中创建一个lambda

template

然后用templatestd::function改变那个std::function

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

我该如何实现?

某些精度:

  • 我需要有templatetemplate,以便在aliases结构中定义它们并将它们传递给我的代码的多个部分的能力
  • 返回类型将始终为aliases,仅参数可以更改
c++ templates lambda std-function
2个回答
3
投票

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

std::function

0
投票

如果您可以接受其他电话方式

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 发挥功能

aliases
© www.soinside.com 2019 - 2024. All rights reserved.