Boost 绑定占位符参数等于可变参数模板参数的数量

2024-02-25

我想知道是否可以使用传递给可变参数模板的参数数量作为 boost::bind 调用中的占位符。

像这样的事情:

template <typename ... Args>

boost::bind(&function, this, anArg, _1));         //If Args count equals 1
boost::bind(&function, this, anArg, _1, _2));     //If Args count equals 2
boost::bind(&function, this, anArg, _1, _2, _3)); //If Args count equals 3

这可能吗?

谢谢


肯定有一种部分专业化的方法。 你的可变参数不能立即知道参数的数量,对吧?您必须使用编译时递归,在此期间您可以使用 boost::mpl 堆叠您的参数(或使用简单的整数常量增量对它们进行计数)。 然后在最后一个非变量递归调用(带有 0 arg)中,您在容器上调用 mpl::size (或者如果您选择这种方式,则仅使用整数计数器)来调用像其他答案一样的 Callable,它包含所有参数,在类型列表的开头加上一个完整的模板参数。这就是你的专长。您为每个参数数量创建一个调用程序,该调用程序将根据其特殊数量的参数调用正确的绑定。 (Callable 结构(部分)根据参数整数模板参数的数量进行专门化。即使 Call 函数采用最大数量的参数,它也只包装正确的 boost::bind 调用,例如 bind(.., _1,_2) 对于可调用) 这并不可怕,但我确认我过去在 C++03 中使用过这种方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Boost 绑定占位符参数等于可变参数模板参数的数量 的相关文章

随机推荐

  • 正则表达式匹配跨平台换行符

    我的程序可以接受具有换行符 n r n 或 r 的数据 例如 Unix PC 或 Mac 样式 构造匹配任何编码的正则表达式的最佳方法是什么 或者 我可以在输入上使用 universal newline 支持 但现在我有兴趣看看正则表达式是
  • 如何处理已释放的持久卷?

    TL 博士 我不知道删除 PVC 后如何访问数据 以及为什么删除 PVC 后 PV 不会消失 我正在采取的步骤 手动在GCE中创建磁盘 gcloud compute disks create size 5Gi disk for rabbit
  • iPad半透明状态栏?

    iPad有没有办法让状态栏半透明 尝试执行此操作时出现此错误 UIStatusBarStyle Black Translucent is not available on this device iPad不支持半透明状态栏 在 iPad 设
  • Android SupportMapFragment 无法看到片段内的地图

    我试图在代码中将 SupportMapFragment 添加到 FrameLayout 中 但出现空指针异常 My Code 主要片段 public class MainFragment extends FragmentActivity O
  • 将部分视图加载到主视图 AngularJS

    我有一个部分视图 我计划将其包含在不同的页面中 我尝试了以下方法来加载部分视图 但该视图不显示模型中存储的值 角度控制器 This gets the required data as JSON AdminService getSetting
  • 如何检查是否至少有一个 RadioButtonList 选择了一项?

    我有20个RadioButtonList位于页面上 我需要创建一种验证方法以确保至少其中之一RadioButtonLists 已选择一个项目 我需要为此使用什么样的验证 EDIT 根据评论和澄清更新了问题 如果您要验证多个RadioButt
  • 如何删除 Android 上的导航栏?

    当我在 Galaxy Nexus 上全屏收听 YouTube 视频时 右侧的导航栏会在几秒钟后消失 该栏包含 后退 主页 和 最近使用的应用程序 按钮 当用户在我的应用程序中观看视频时 我想做同样的事情 隐藏导航栏的代码是什么 更新 这是我
  • 尽管 user:email 范围,Github 用户电子邮件为空

    我正在关注Github 的 OAuth 流程 https developer github com v3 oauth 并获取一个访问令牌 使我能够访问用户的电子邮件范围 当我用代码交换访问令牌时 使用https github com log
  • AWS:如何找出 GitHub Actions 集成所需的最低 IAM 权限

    我需要创建一个CloudFormation创建多个资源的 SAM 模板 我还需要整合GitHub Actions因此代码会在推送时自动部署 问题是这需要我给 GitHub 大量的 IAM 权限来完成必要的工作 请注意 我使用的是 GitHu
  • 反向搜索栏(从右到左)颜色

    我一直在尝试实现一个类似于您用来接受或拒绝呼叫的搜索栏 对于呼叫接受 我设置 sbLeft setProgress 0 对于呼叫拒绝 我设置 sbRight setProgress 15 setMax 15 机器人两个搜索栏 这给了我预期结
  • 我怎样才能将其转换为月份?

    6 9 2013 1 15 7 9 2013 1 15 我在这种格式的列中有一系列数据 我正在尝试将其转换为一个月并将其存储在不同的列中 我该怎么做 Intended output June July 我尝试使用 lubridate 库但无
  • 使用 Task.FromAsync 时 WebRequest BeginGetResponse/EndGetResponse 抛出异常

    我尝试使用 WebRequest 将 POST 操作异步到 REST Web 服务 所以据我所知 我需要使用Task Factory FromAsync
  • 单击 QPushButton 时,它会触发两次

    我在一个项目中使用了 PyQt5 并有以下片段 button是一个 QPushButton def on receive self query print receiving query datapackages json loads qu
  • Scalacheck,大小 5 到 12 之间的列表生成器

    我可以找到许多设置生成器最大尺寸的示例 但是如何生成最小和最大长度之间的列表 生成器的一个巧妙属性是它们是可组合的 因此您可以简单地使用以下命令来组合列表长度的生成器listOfN发电机 for numElems lt Gen choose
  • 当SectionList组件中的部分为空时渲染“无内容”组件

    See https facebook github io react native docs sectionlist html https facebook github io react native docs sectionlist h
  • com.google.android.apps.gcs 导致应用程序在模拟器中启动时崩溃

    我在 Android Studio 中有一个 Android 9 模拟器 我正在尝试在其上运行我的应用程序 然而应用程序在启动时崩溃 并且它不断记录这个冗长的错误 2018 10 08 11 48 28 693 18207 18309 E
  • 使用 Flexbox 和 Overflow 将项目居中

    问题总结 我想要的布局是能够将页面上未知尺寸的图像居中 垂直和水平 如果图像太大而无法适应任一方向 我想显示滚动条 以便用户可以滚动以查看完整图像 我遇到的问题是 当图像太大而无法容纳时 图像的顶部和左侧 取决于被截断的部分 将永远无法滚动
  • C#中可以继承数据注解吗?

    我可以在另一个类中继承 密码 数据注释吗 public class AccountCredentials AccountEmail Required ErrorMessage xxx StringLength 30 MinimumLengt
  • 设置响应内容类型而不使用 HttpServletResponse

    我怎样才能得到HttpServletResponse object在我的弹簧控制器的方法中以便我的应用程序与 Http API 保持松散耦合 谢谢 编辑 实际上我想要的是设置内容类型spring 是否提供了任何方法来实现此目的 而无需将 H
  • Boost 绑定占位符参数等于可变参数模板参数的数量

    我想知道是否可以使用传递给可变参数模板的参数数量作为 boost bind 调用中的占位符 像这样的事情 template