首页 > 其他分享 >模板特化的多维度挖掘

模板特化的多维度挖掘

时间:2023-09-21 10:58:17浏览次数:29  
标签:std enable cout int void 多维度 template 模板 特化

  假如我有一个需求,就是如果传入的参数是int类型,我就输出int类型,否则就输出T。很显然,根据模板的基础知识,我们可以这么写

template <class T>
void f(T) {
    std::cout << "T\n";
}

template <>
void f(int) {
    std::cout << "int\n";
}

  除了这样写,还有别的写法吗。我们可以思考一下.................这里我们其实可以用std::enable_if_t来实现,它相当于给std::enable_if的type类型起了一个别名,我们先看怎么写。

template <class T>
std::enable_if_t<std::is_same_v<int, T>> g(T) {
    std::cout << "int\n";
}

template <class T>
std::enable_if_t<!std::is_same_v<int, T>> g(T) {
    std::cout << "T\n";
}

  假设我现在再提一个需求,就是只能实现一个函数,且只能接受int类型的参数,其它类型均不能通过编译。这时候如果你仅仅单纯地void f(int),那么即便你传入double类型进来,它也会发生类型转换并执行这个函数,这并不是我们想要的。因此,我们可以考虑用std::enable_if_t来实现。

template <class T>
std::enable_if_t<std::is_same_v<int, T>> h(T) {
    std::cout << "strictly int\n";
}

  好的,事情到这里结束。  

标签:std,enable,cout,int,void,多维度,template,模板,特化
From: https://www.cnblogs.com/ChebyshevTST/p/17719339.html

相关文章

  • 最短路基础实现方法模板合集
    $\color{#39c588}{关于最短路}$$\color{purple}{首先是最短路的算法选择思路捏,直接来个Y总的图}$++$\color{purple}{单源汇问题}$++$\color{orange}{朴素版Dijkstra}$实现思路//朴素版Dijkstrao(n^2)--处理稠密图--稠密图用邻接矩阵存储//1.初始化邻接......
  • jwt配置及代码模板
    jwt配置及代码模板jwt工具类的使用依赖<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.6.0</version></dependency>application.properties配置jwt.config.key=userlogin......
  • 小旋风万能蜘蛛池站群pro模板
    新版本小旋风蜘蛛池pro修改增加了一些模板标签,和原来的调用有些区别。如果没有旧版本的小旋风万能蜘蛛模板,那直接用pro的标签文档写模板,或者买现成的!现成的小旋风蜘蛛池pro模板,可以看:x1.testhot.top 到  x17      小说模板q1.testhot.top 到 q19  下载站模板ying1......
  • 【模板】模意义下的乘法逆元
    由于老是搞混,故开此文。exgcd快速幂线性递推参考资料:当然是洛谷的题解啦!!!link.......
  • Jasper模板使用记录七——Group分组
    Group特点1.通过Group分组可以将集合中的数据进行分组显示2.Group分组有GroupHeader和GroupFooter可以在每个组的前后添加元素3.Group分组的效果是在Detail中显示的注意点Group并不会将乱序的集合数据进行分组和排序,只会按照集合的顺序进行遍历,如果本条数据和上一条......
  • Jasper模板使用记录六——模板字体问题
    1.TIBCOjaspersoft设置字体使用TIBCOjaspersoft软件进行模板设计时,可以为各个组件设置显示的字体,通常大部分字体可以使用,如果有不能使用的字体,也可以通过下载字体文件,并为TIBCOjaspersoft进行设置,先选中项目,然后进行如下操作:2.后台工程设置字体2.1、创建字体配置文......
  • Jasper模板使用记录二——JSON文件数据源
    json文件数据源1.新建json文件,并将字段补充完整,示例如下:{ hosp_name:"医院", rows:[{ name:"姓名", age:12, }]}2.新建json数据源,如下:3.新建Jasper文件4.设置数据源,并导入数据源字段至Fields5.通过拖拽Paramter或Field至模板,进行模板设计......
  • Jasper模板使用记录三——数据换行问题
    通过设置组件的StreetchWithOverflow和StretchType可以让组件整行拉伸......
  • Jasper模板使用记录一——各模块特点
    模板各个模块特点Title(标题):只在整个报表的第一页的最上端显示。只在第一页显示,其他页面均不显示。PageHeader(页头):在整个报表中每一页都会显示。在第一页中,出现的位置在TitleBand的下面。在除了第一页的其他页面中PageHeader的内容均在页面的最上端显示。PageFooter(......
  • Eclipse Java注释模板设置详解
    设置注释模板的入口:Window->Preference->Java->CodeStyle->CodeTemplate然后展开Comments节点就是所有需设置注释的元素啦。现就每一个元素逐一介绍:文件(Files)注释标签:/***@Title:${file_name}*@Package${package_name}*@Description:${todo}(用一句话描......