首页 > 编程语言 >C++模板--packaged_task 如何打包 lambda 和函数指针?

C++模板--packaged_task 如何打包 lambda 和函数指针?

时间:2025-01-19 12:43:15浏览次数:1  
标签:task Rp -- packaged 函数指针 模板 lambda

从它的构造函数上看, 似乎不能接受 lambda 和函数指针作为构造函数的参数
但可以通过如下 自定义推导规则 来实现.
这实际上是Deduction Guides技术

//1
template <class _Rp, class... _Args>
packaged_task(_Rp (*)(_Args...)) -> packaged_task<_Rp(_Args...)>;

//2
template <class _Fp, class _Stripped = typename __strip_signature<decltype(&_Fp::operator())>::type>
packaged_task(_Fp) -> packaged_task<_Stripped>;
  1. 如果传入模板实参是函数指针类型 _Rp (*)(_Args...), 那么
    • 被引导为 _Rp(_Args...), 从而使用类模板 packaged_task<_Rp(_Args...)>
  2. 如果传入的模板实参是 lambda 对象的类型 _Fp, 那么
    • decltype(&_Fp::operator()) 解析它的 operator 成员函数指针类型
    • __strip_signature 删除成员函数指针类型的 类签名
    • 最后引导为 _Stripped 类型, 它是函数指针类型
    • 再通过 //1 的引导, 使用类模板 packaged_task<_Rp(_Args...)>

标签:task,Rp,--,packaged,函数指针,模板,lambda
From: https://www.cnblogs.com/easify/p/18679489

相关文章

  • jest.spyOn 如何监听vue的 created生命周期
    jest.spyOn是Jest测试框架提供的一个功能,用于创建一个间谍(spy)来监视对象上的方法调用。然而,直接使用jest.spyOn来监听Vue组件的生命周期钩子如created并不是最直观的方法,因为这些钩子并不是组件实例上的公开方法,而是由Vue框架内部管理的。为了测试Vue组件的生命周期......
  • RWKV-7 与 SamOut 的优势和劣势
    RWKV-7的优势超越传统Attention范式RWKV-7引入了WKV机制,取代了传统的self-attention方法,这使得它能够在相同算力消耗下解决attention无法处理的问题。尽管SamOut也实现了高效的长文本处理能力,但两者在具体实现上有不同的侧重点和技术路径。动态状态演化RW......
  • 电路研究9——GPRS用的AT命令手册
        因为用到了GPRS模块,是合宙的所以就用到了他给的AT指令了,这个是在合宙网上扒下来的手册,便于到时使用:    补:本来再模块里面说的是AirM2M无线模块AT命令手册,但是我查到了的是网上百度2024年6月的版本,但是我不是会员,所以弄不下来,能弄下来的是一个2018年的版......
  • 使用wget下载Civitai教程和优化
    在现代互联网中,下载大规模的数据文件时,我们往往需要借助一些自动化工具来简化过程,尤其是当需要下载多个文件或特定资源时。本文将介绍如何使用wget工具配合Python脚本来批量下载Civitai网站上的数据,同时提供一些优化和定制化的技巧。简便的教程,一阵见血wget https:/......
  • Linux 上安装 Node.js
    在Linux上安装Node.js的方法取决于你使用的发行版。以下是常见的几种安装方法:方法1:通过包管理器安装(推荐)对于Ubuntu/Debian系统:更新系统包索引:sudoaptupdate安装Node.js(LTS版本)你可以直接使用Ubuntu/Debian的官方包管理器安装Node.js,但是推荐使用NodeS......
  • 电路研究7——触摸按键自锁电路
        一直以来使用的是单片机管脚控制的高低电平作为开关机电路,或者是单刀双掷开关作为开机电路,不过现在想弄个轻触开关自锁电路:    下面是网上选抄下来的,便于我以后使用的时候选用:    例子1:轻触开关实现自锁功能电路图        (1)三极管Q2......
  • AndroidStudio:GPS定位与网络定位定位服务
    前言:如今主流的定位方式有两种:GPS定位和网络定位。GPS即通过卫星定位,网络定位则需要通过手机附近的基站,WIFI等确定位置信息。二者的优缺点各有不同,Gps较为精准但是耗电量大,网络定位功耗小但是不精确。这篇文章会以LocationManager为例,讲解如何在Androidstudio中使用这两种定位......
  • springboot+vue高校年终考核材料归档平台研究与设计 64x25
    目录系统实现截图开发核心技术介绍技术栈核心代码部分展示操作手册视频演示/源码获取系统实现截图开发核心技术介绍springboot+Element-UI+vue本系统采用MVVM模式,开发框架使用SpringBoot框架,开发工具使用IDEA,VisualStudioCode,Web服务器使用Tomcat,数据库服务......
  • 基于大数据的学习资源推荐系统设计与实现
    文章目录具体实现截图项目技术介绍系统设计开发技术预期达到的目标核心代码部分展示文章目录/写作提纲参考参考文献源码/演示视频获取方式具体实现截图项目技术介绍Python版本:python3.7.7框架支持:flask/django开发软件:PyCharm浏览器:谷歌浏览器数据库:mysql......
  • 前端必知必会-Node.js连接MongoDB 创建集合
    文章目录Node.js连接MongoDB创建集合创建集合总结Node.js连接MongoDB创建集合MongoDB中的集合与MySQL中的表相同创建集合要在MongoDB中创建集合,请使用createCollection()方法:示例获取您自己的Node.js服务器创建一个名为“customers”的集合:varMon......