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



我正在尝试将此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...);
};
}

您必须在此处使用2个模板参数

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

Ts...是一个参数包,它可以包含任何类型。

最新更新