首页 > 其他分享 >模板特化遇到的问题--多参数特化

模板特化遇到的问题--多参数特化

时间:2023-11-06 22:45:55浏览次数:27  
标签:Compare ab return -- template 模板 特化

1.问题

我想比较一个int类型和char类型(将char类型-'0')后进行比较,写了如下代码,
但是报错 [Error] template-id 'Compare_ab<>' for 'bool Compare_ab(int&, char&)' does not match any template declaration
代码如下

template<class T>
bool Compare_ab(T &a, T &b){
    if (a == b) return true;
    else return false;
}

template<>
bool Compare_ab(int &a, char &b){
    int temp = b - '0';
    if (a == temp) return true;
    else return false;
}

2.解决

模板特化首先必须要有一个基础的函数模板!!!
这里的是一个拥有两个不同类型参数的全特化模板,我们之前写的第一个基础模板只能匹配单种类型的特化模板,
如果这里想操作,必须在设置一个拥有两个不同类型参数的基础模板

template<class T>
bool Compare_ab(T &a, T &b){
    if (a == b) return true;
    else return false;
}

template<typename T, typename U>
bool Compare_ab(T &a, U &b){
    if (a == b) return true;
    else return false;
}

/* 模板特化首先必须要有一个基础的函数模板!!! */
/* 全特化模板中若出现两个不同的参数类型,就不能用第一个模板了,那是针对一种类型的,需要另外设置一个基础模板*/
template<>
bool Compare_ab(int &a, char &b){
    int temp = b - '0';
    if (a == temp) return true;
    else return false;
}

标签:Compare,ab,return,--,template,模板,特化
From: https://www.cnblogs.com/trmbh12/p/17813949.html

相关文章

  • Spring Boot 2.x版本 + JDK17使用虚拟线程
    来源:https://spring.io/blog/2022/10/11/embracing-virtual-threadsconfig里定义两个类:@ConfigurationpublicclassThreadConfig{@Bean(TaskExecutionAutoConfiguration.APPLICATION_TASK_EXECUTOR_BEAN_NAME)publicAsyncTaskExecutorasyncTaskExecutor(){......
  • 莫队的时间复杂度?
    普通莫队的时间复杂度分析:设块长为\(B\),\(l\)的移动次数是\(O(mB)\)的,\(r\)的移动次数是\(O(\frac{n}{B}n)\)的,所以总时间复杂度为\(O(mB+\frac{n}{B}n)\),考虑时间复杂度的平衡,取\(B=\frac{n}{\sqrt{m}}\),则总时间复杂度为\(O(n\sqrt{m})\)。带修改的莫队的时间复杂度......
  • round的函数的使用
     对于浮点数的运算中,两个带小数点的数值进行运算会出现不确定的尾数。例如 0.1+0.2其结果为: x=0.1y=0.2print(x+y,'x的类型是:',type(x))#所得的值为0.30000000000000004#要想使得没有不确定的尾数,使用round函数print(round(x+y,1))......
  • Azure Data Factory(十)Data Flow 组件详解
    一,引言随着大数据技术的不断发展,数据处理和分析变得越来越重要。为了满足企业对数据处理的需求,微软推出了AzureDataFactory(ADF),它是一个云端的数据集成服务,用于创建、安排和管理数据工作流。在本文中,我们将重点介绍AzureDataFactory的数据流(DataFlow),以及它如何帮助......
  • 助教工作10月总结(前端开发技术)
    一、助教工作的具体职责和任务作为前端这门课程的助教主要的职责是辅助老师完成在课外的一些教学任务例如 1、课下的疑难解答 :课下辅导中,我通过QQ私聊等方式与学生进行沟通,并帮助他们解决在学习过程中遇到的困惑和问题。我会提供适当的指导和建议,引导学生找到解决问题的方法和......
  • QEMU for windows
    QEMUDownloadQEMU-QEMUQEMUcanbeinstalledusingMSYS2also.MSYS2usespacmantomanagepackages.First,followtheMSYS2installationprocedure.Thenupdatethepackageswithpacman-Syucommand.Nowchoosethepropercommandforyoursystemasfol......
  • 【python爬虫】80页md笔记0基础到scrapy项目高手,第(4)篇:requests和网络数据获取进阶
    本阶段主要学习requests这个http模块,该模块主要用于发送请求响应,该模块有很多的替代模块,比如说urllib模块,但是在工作中用的最多的还是requests模块,requests的代码简洁易懂,相对于臃肿的urllib模块,使用requests编写的爬虫代码将会更少,而且实现某一功能将会简单。因此建议大家掌握该......
  • 数据结构-队列
    一、概念1、队列的定义队列是仅限在一端进行插入,另一端进行删除的线性表。队列又被称为先进先出(FirstInFirstOut)的线性表,简称FIFO。2、队首允许进行元素删除的一端称为队首3、队尾允许进行元素插入的一端称为队尾二、接口1、可写接口(1)数据入队队列的插入操作,叫做入队。它是......
  • 【小沐学Vulkan】Vulkan开发环境配置
    1、简介https://www.vulkan.org/Vulkan是新一代图形和计算API,用于高效、跨平台访问GPU。Vulkan是一个跨平台的2D和3D绘图应用程序接口(API),最早由科纳斯组织在2015年游戏开发者大会(GDC)上发表。号称是glNext。旨在提供更低的CPU开销与更直接的GPU控制,其理念大致与Direct3D12......
  • SpringBoot 单元测试
    1、什么是单元测试?单元测试(UnitTesting)是一种软件测试方法,用于验证和确认代码中的各个单元(通常是函数、方法或类)是否按照预期工作。单元测试旨在检测代码中的小部分,以确保其功能的正确性。2、单元测试有哪些好处?在单元测试中使用模拟对象来替代实际的数据库访问操作,不会实际修改数......