c++ - 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...
是一个参数包,它可以包含任何类型。
推荐阅读
- php - 在 PHP 中将纯文本 URL 转换为 HTML 超链接
- kubernetes - Kubernetes 架构中的 etcd 复制
- java - 如何在java中获取给定月份的第一个日期和最后一个日期?
- java - 使用多个线程填充静态数组
- mysql - 计算 A 列中的所有值,但仅计算 B 列中的某些值
- python - 如何从Python中的字符串中仅替换部分单词
- python - 从索引形成一个 numpy 数组并用零填充
- python - json 清理并删除坏列和不必要的列表
- javascript - Babel 打字稿意外标记“?” 在声明中
- typo3 - 在 TYPO3 站点中使用独立 PHP 脚本是否有可行的用例?