c ++如何使用Variadic创建闭包?

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

我正在尝试将此python代码重写为等效的pybind c ++。但是我无法让我的C ++代码接受未知数量的参数

python:

def primitive(f_raw):
    def f_wrapped(*args, **kwargs):
            return f_raw(*args, **kwargs)
    return f_wrapped

c ++:

template <class... T>
std::function<T(T...)> primative(std::function<T(T...)> callable)
{
  return [=](T... params){
    return callable(params...);
  };
}
c++ closures std-function variadic pybind11
1个回答
0
投票

您必须在这里使用2个模板参数

template <class T, class... Ts>
std::function<T(Ts...)> primative(std::function<T(Ts...)> callable)
{
  return [=](Ts... params){
    return callable(params...);
  };
}

[Ts...parameter pack,它可以包含任何类型。

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