vs2019 c++中模板 enable_if_t 的使用

(1) 该模板的定义如下:

template <bool _Test, class _Ty = void>
struct enable_if {}; // no member "type" when !_Testtemplate <class _Ty>
struct enable_if<true, _Ty> { // type is _Ty for _Testusing type = _Ty;
};template <bool _Test, class _Ty = void>
using enable_if_t = typename enable_if<_Test, _Ty>::type;

当第一个模板参数为 true 时 , 名称 enable_if_t 才对应类型名 _Ty 。进而可以用 enable_if_t 来定义变量。
看源码时,经常出现的情况是类的成员函数是模板函数,但对成员函数的模板参数的类型加以限制。
即某些条件满足时才可以调用类的该成员函数。若类里只有一个具有此名字的成员函数,且对其调用的条件不满足(没有给出合适的模板参数),结果是在编译阶段,代码就报错了。这就是使用 enable_if_t 的好处。
举个 STL 库中为类的模板成员函数使用 enable_if_t 的例子:

在这里插入图片描述

(2)写个小练习:

在这里插入图片描述

上例中的 A 只可以接受 char 类型的实参。若以其它类型为实参,则编译阶段就报错了,很神奇呢:

在这里插入图片描述

谢谢阅读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/12529.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang | Leetcode Golang题解之第89题格雷编码

题目&#xff1a; 题解&#xff1a; func grayCode(n int) []int {ans : make([]int, 1<<n)for i : range ans {ans[i] i>>1 ^ i}return ans }

MSR810-LM快速配置通过LTE模块上网

正文共&#xff1a;1111 字 13 图&#xff0c;预估阅读时间&#xff1a;1 分钟 之前买了一个无线版本的MSR810-W&#xff08;淘了一台二手的H3C企业路由器&#xff0c;就用它来打开网络世界的大门&#xff09;&#xff0c;并整理了一份快速配置&#xff08;脚本案例来了&#x…

三菱FX3U-4AD模拟量电压输入采集实例

硬件&#xff1a;&#xff30;&#xff2c;&#xff23;模块 &#xff26;&#xff38;&#xff13;&#xff27;&#xff21;-&#xff12;&#xff14;&#xff2d;&#xff34; &#xff1b;&#xff21;&#xff0f;&#xff24;模块&#xff26;&#xff38;&#xff13…

SQL——SERVER的建表主要操作

目录 一&#xff1a;数据存储问题 1.表的相关数据 2.表&#xff0c;字段&#xff0c;记录 二&#xff1a;建表 1.创建表头 2. 数据类型 3.保存数据 4.数据冗余 5.使用命令重置表 7.设置主键 一&#xff1a;数据存储问题 1.表的相关数据 表是数据库的基本单位&…

交互原型设计工具 Axure RP 9 for Mac 正式激活版

Axure RP 9 Pro Mac版是Mac平台上的一款专为快速原型设计而生的应用&#xff0c;Axure RP 9 Pro Mac版可以辅助产品经理快速设计完整的产品原型&#xff0c;并结合批注&#xff0c;说明以及流程图&#xff0c;框架图等元素&#xff0c;将产品完整地表述给各方面设计人员&#x…

Android Studio(AS)使用别人的项目与gradle包并运行项目

一、问题描述 在进行AS开发时&#xff0c;我们可能会使用到别人的项目&#xff0c;但发现别人把项目发给我们后会发现gradle项目同步失败o(≧口≦)o&#xff0c;此时计有三&#xff1a; 1.横行霸道、豪取抢夺&#xff1a;直接空降到项目人那里&#xff0c;强他的电脑占为己有…

Numpy的数组操作

文章目录 数组的创建创建全0的二维数组a(3,3)全1的二维数组b&#xff08;3,4&#xff09;随机数二维数数组c&#xff08;2,3&#xff09;效果截图 数组的属性查看b数组的维度查看b数组元素的个数效果截图 数组的维度操作将数组c的行变列&#xff0c;返回最后一个元素返回数组c第…

python 虚拟环境-最简单的教程

查看当前 python 的安装路径 which python 1、Anaconda创建虚拟环境 (1)执行命令&#xff1a;conda create --name env_name python3.10&#xff0c; 命令中我制定了环境名称是env_name&#xff0c;指定了Python版本是3.10&#xff0c;执行命令后&#xff0c;Conda会自动下…

【回溯】1240. 铺瓷砖

本文涉及知识点 回溯 LeetCode1240. 铺瓷砖 你是一位施工队的工长&#xff0c;根据设计师的要求准备为一套设计风格独特的房子进行室内装修。 房子的客厅大小为 n x m&#xff0c;为保持极简的风格&#xff0c;需要使用尽可能少的 正方形 瓷砖来铺盖地面。 假设正方形瓷砖的…

前端面试题复习 - 性能优化

图片加载优化 很多修饰类图片完全可以用css代替对于移动端来说&#xff0c;很多图片都可以用CDN加载小图使用base64格式使用雪碧图能够显示WebP格式的浏览器尽量使用WebP格式。因为WebP格式具有更好的图像数据压缩算法&#xff0c;能带来更小的图片体积&#xff0c;而且拥有肉…

3、用Vue快雕塑搭建一个管理系统的页面布局框架

3.2.顶部栏header 在el-header标签里对标签栏header进行样式定义 <template><div id"app"><el-container><el-header style"background-color: #4c535a"><img src"/assets/logo.png" alt"" style"w…

贪心+数学

一、题目 1、题目描述 给你一个下标从 0 开始的整数数组 tasks &#xff0c;其中 tasks[i] 表示任务的难度级别。在每一轮中&#xff0c;你可以完成 2 个或者 3 个 相同难度级别 的任务。 返回完成所有任务需要的 最少 轮数&#xff0c;如果无法完成所有任务&#xff0c;返回 …

运维别卷系列 - 云原生监控平台 之 05.prometheus alertManager 实践

文章目录 [toc]Alertmanager 简介Alertmanager 实现的核心概念GroupingInhibitionSilencesClient behaviorHigh Availability Alertmanager 配置文件globaltemplatesrouteinhibit_rulesreceivers Alertmanager 部署创建 cm创建 svc创建 stsPrometheus 配置告警Prometheus 配置文…

Frida-RPC 调用

demo frida-rpc通过调用已加载到内存中的函数,直接获取到结果: import fridardev = frida.get_remote_device() session = rdev.attach("大姨妈")scr = """rpc.exports = { encrypt(j2, str){var res;Java.perform(function () {var Crypt = Ja…

K-means 算法【python,算法,机器学习】

K-means 算法试图将数据集中的样本划分为若干个子集&#xff0c;每个子集称为一个簇&#xff0c;通过该算法使得每个聚类内的数据点尽可能相似&#xff08;即距离该聚类的中心点最近&#xff09;&#xff0c;而不同聚类之间的数据点尽可能不相似。 算法步骤如下&#xff1a; 从…

Kubernetes 的命令行工具kubectl介绍

目录 1. 查看资源状态2. 创建资源3. 描述资源4. 更新资源5. 删除资源6. 暴露服务7. 状态检查与故障排查8. 扩缩容9. 自动补全10. 上下文管理11. 查看事件12. 资源编辑 kubectl 是 Kubernetes 的命令行工具&#xff0c;它用于与 Kubernetes 集群进行交互&#xff0c;执行各种管理…

Vu2之使用provide与inject传递数据案例

Vu2之使用provide与inject传递数据案例 在Vue 2中&#xff0c;provide 和 inject 是一对用于在组件树中传递数据的高级选项。它们允许祖先组件向其所有子孙后代组件提供数据&#xff0c;而无需显式地通过 props 或事件进行传递。 provide 选项是在祖先组件中声明的&#xff0c;…

运维别卷系列 - 云原生监控平台 之 03.prometheus label 实践

文章目录 [toc]label 简介自定义标签relabel_configsregexrelabel_action metric_relabel_configs两者的区别 实践 label 简介 label 对于 Prometheus 来说&#xff0c;属于数据处理的方式&#xff0c;Prometheus 是通过指定的 label 来查询数据 Prometheus 的 target 中实例&…

css 步骤条虚线渐变色效果实现

效果如图所示&#xff1a; 思路&#xff1a; 使用元素覆盖的方式实现视觉上虚线的效果 实现代码&#xff1a; html布局 <ul class"details-cont"><li class"details-li" v-for"item in 3" :key"item"><div class&qu…

(教程)gpt-4o如何使用,怎么体验?gpt-4o和gpt-4-turbo的区别

今天OpenAI发布了gpt-4o&#xff0c;我体验之后&#xff0c;gpt-4o简直逆天了。中文能力也挺别强。速度比现在的gpt4还要快。 早在 5 月 11 日&#xff0c;Sam 就在推文中表示&#xff1a;OpenAI 并没有推出 GPT-5&#xff0c;或搜索引擎&#xff0c;但团队一直在努力研发一些…