类模板的偏特化

2023-10-29

Class templates 可以被偏特化(partial specialized,或称部份特化、局部特化)。这使你得以在特定情形下使用特殊实作码,但仍然留给你(使用者)选择  template parameters 的能力。

例如对于下面的  class template: 

template <typename T1, typename T2> 
class MyClass { 
... 

}; 


以下数种形式的偏特化都是合理的: 
//  偏特化:两个  template parameter  相同 
template <typename T> 
class MyClass<T,T> { 
... 
}; 
 

//  偏特化:第二个类型为 int 

template <typename T> 

class MyClass<T,int> { 

... 
}; 
 
//  偏特化:两个  template parameter  均为指针类型  
template <typename T1, typename T2> 
class MyClass<T1*, T2*> { 
... 
}; 
 
以下例子示范,下列各种声明语句将使用上述哪一个  class template: 
MyClass<int,float> mif; //  使用  MyClass<T1,T2> 
MyClass<float,float> mff; //  使用  MyClass<T,T> 
MyClass<float,int> mfi; //  使用  MyClass<T,int> 
MyClass<int*,float*> mp; //  使用 MyClass<T1*,T2*> 
 

如果某个声明语句与两个(或更多)偏特化版本产生同等的匹配程度,这个声明语句便被视为模棱两可(歧义):

 

MyClass<int,int> m; //  错误:同时匹配  MyClass<T,T>  和  MyClass<T,int> 
MyClass<int*,int*> m; //  错误:同时匹配  MyClass<T,T>  和  MyClass<T1*,T2*> 
 
为解除上述第二声明的歧义性,你可以针对「指向相同类型」的指针,提供另一个偏特化版本: 
template <typename T> 
class MyClass<T*,T*> { 
... 
}; 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

类模板的偏特化 的相关文章

  • c++ string函数详细返回值及用法!

    通过在网站上的资料搜集 得到了很多关于string类用法的文档 通过对这些资料的整理和加入一些自己的代码 就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了 下面先罗列出string类的函数有哪一些 然后再罗列出函数的原型
  • c++模板的成员模板

    成员模板 成员模板 一个类 无论是普通类还是模板类 可以包含本身是模板的成员函数 成员模板不能是虚函数 普通类的成员模板 class DebugDelete public DebugDelete std ostream s std cerr
  • 网络流经典模型——最大权闭合子图

    网络流经典模型 最大权闭合子图 什么是闭合子图 闭合子图的概念 通俗点说就是选出一个图的子图 使得子图中的所有点出度指向的点依旧在这个子图内 则说明此子图是闭合子图 如下图 最大权闭合子图 假设每个点具有点权值 在一个图的所有闭合子图中 点
  • 无向图——邻接表和邻接矩阵的实现

    邻接矩阵 include
  • 模板类重载>>(输入)和<<(输出)运算符

    在模板类中输入运算符 gt gt 和输出运算符 lt lt 的重载 使用友元在类内声明 在类外实现 include
  • c++显示实例化和显示具体化

    1 实例化 instantiation 实例化是指编译器使用函数 或者是类 模板为特定类型生成函数 类 定义 编译器不会为函数 或者类 模板生成定义 只有当我们为函数 或者类 模板指定了一个特定类型时 编译器才会生成 编译器为特定类型的函数
  • 丑数打表 & 计算 (自用)

    丑数定义 只包含因子2 3 5的正整数被称作丑数 define min a b a lt b a b define min4 a b c d min min a b min c d int choushu 5850 int main int
  • C++模板-泛型函数与泛型类

    泛型 在调用函数或使用该类时才指定特定的类型 可以避免重复写类似功能代码 那C 语言如何定义泛型呢 Author W 泛型 模板 只有在调用或使用该函数或类时 才确定类型 1 泛型函数 2 泛型类 引入标准输入输出流 include
  • 【 C++ 】函数模板进阶

    目录 1 非类型模板参数 2 模板的特化 2 1 概念 2 2 函数模板特化 2 3 类模板特化 全特化 偏特化 类模板特化示例 3 总结 1 非类型模板参数 模板参数分类类型形参与非类型形参 类型模板参数 出现在模板参数列表中 跟在cla
  • c++11 之可变参数模板

    目的 包含0到任意个模板参数 声明可变参数模板需要在typename或class 后面加上省略号 一 可变参数模板函数 template
  • gcd模板

    include
  • STL十大容器 之 list

    特点 内存不连续 底层实现是链表 插入和删除的效率比较快 随机访问效率比较低 和vector相比 不再需要 capacity 和 reserve 操作 因为链表没有大小限制 不需要为了效率增加预分配内存的功能 一 插入和删除 push ba
  • 变长参数表va_list,模板template,打造通用函数

    假设我想写一个支持变长参数的max函数 template
  • (模板)米勒罗宾素数测试

    18位素数 154590409516822759 19位素数 2305843009213693951 梅森素数 19位素数 4384957924686954497 LL prime 6 2 3 5 233 331 LL qmul LL x
  • c++模板实参推断

    模板实参推断 类型转换与模板类型参数 template
  • PPT 各行各业素材 10000套 讲解

    10000套各行各业PPT模板 提供下载 请扫二维码 PPT模板动态工作教育毕业答辩总结教师商务中国风清新简约素材 PPT模板简约风格中国动态模板静态模板唯美清新扁平论文答辩教育 PPT模板工作总结党政机关节日庆典儿童卡通教学课件岗位竞聘
  • template之模板注意事项

    前言 在分析STL之前 我们需要先对template做一个回忆 可能我总结的内容你都会了 也可能你没有了印象了 但是我还是希望你先浏览一下template的用法 毕竟STL全部都涉及到了模板 而template是学习STL的基础 templ
  • Mixin从理论到实践

    mixin从理论到实践 mixin从理论到实践 一 什么是mixin 二 使用mixin 三 mixin的合并策略 四 mixin辨析 五 个人实践 mixin从理论到实践 一 什么是mixin mixin混入 Vue js vuejs o
  • 以模板的方式重载"operator <<"需要注意的地方

    当我们用C 进行后台开发的时候 常常需要知道某一时刻一个容器的内容 通常 我们的做法是利用迭代器将容器内容打印到日志文件中 然后进行观察分析 如果每次打印都去找迭代器的麻烦 显然不是我们想要的 这样 顺理成章的我们就想到了封装函数 为了更方
  • (模板)多项式乘法对任意数取模

    多项式乘法 系数对MOD 1000000007取模 常数巨大 慎用 只要选的K个素数乘积大于MOD MOD N 理论上MOD可以任取 define MOD 1000000007 define K 3 const int m K 100453

随机推荐

  • 转1:Python字符编码详解

    Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MBCSDBCSANSI本地化 321 GB
  • Android Studio导入工程报错[Plugin with id 'com.android.application' not found]

    http blog csdn net seafishyls article details 53572939 版权声明 本文为博主原创文章 未经博主允许不得转载 目录 出错现象 原因分析 buildgradleProject xxxx bu
  • 【解决】android设备有root权限,执行“adb disable-verity”命令报错“verity cannot be disabled/enabled - USER build”

    这个错误提示意味着你的设备是使用USER版本的固件构建的 这个版本不允许禁用verity功能 但是 你可以尝试以下步骤来解决问题 确认你的设备是否已经root 可以通过执行 adb root 命令来检查 确认你的设备是否已经启用了开发者选项
  • vue-cli3.0 配置使用 less 全局样式

    在css样式文件夹中新增 global less 作为全局样式 在 main js 中通过 import 导入 可正常使用样式 但 global less 中定义的样式属性还不能全局使用 需通过以下方法配置 1 安装 style resou
  • 加密软件如何和PDM软件结合使用

    在企业里面都会用到加密软件 比如IP guard 壹加密 亿赛通等等 但是加密软件会导致PDM软件原本的各个功能都被限制 所以为了助力企业解决问题 更好的帮助企业完成PDM的正常使用 今天给大家分享一下解决方法 请看下文 SOLIDWORK
  • APP自动化测试-2. Appium录制测试用例

    APP自动化测试 2 Appium录制测试用例 文章目录 APP自动化测试 2 Appium录制测试用例 前言 一 android自动化依赖 1 adb依赖 2 android真机或模拟器 3 Appium Desktop Appium 二
  • CSS 鼠标样式和手指样式整理

    巧合要用到鼠标样式效果 就顺便整理了下十五种CSS鼠标样式 小例子供大家使用啊 CSS鼠标样式语法如下 任意标签中插入 style cursor 例 子 span 文本或其它页面元素 span a href 文本或其它页面元素 a 注意把
  • 【ReID】【代码注释】难样本三元组损失TriHard loss deep-person-reid/losses.py

    源码URL https github com michuanhaohao deep person reid blob master losses py TriHard loss部分的源码注释 class TripletLoss nn Mod
  • 多线程编程——实战篇(一)

    多线程编程 实战篇 二 多线程编程 实战篇 三 多线程编程 实战篇 四 在进入实战篇以前 我们简单说一下多线程编程的一般原则 安全性 是多线程编程的首要原则 如果两个以上的线程访问同一对象时 一个线程会损坏另一个线程的数据 这就是违反了安全
  • ClickHouse之建表优化和底层语法优化(谓词下推等)

    文章目录 一 建表优化 1 数据类型 1 1 时间字段的类型 1 2 空值存储类型 2 分区和索引 3 表参数 4 写入和删除优化 5 常见配置 5 1 CPU 资源 5 2 内存资源 5 3 存储 二 CK底层语法优化 1 count优化
  • Maven: maven parent.relativepath point at wrong local pom

    Maven maven parent relativepath point at wrong local pom 参考 https blog csdn net qwfys200 article details 82703025
  • DMA实验程序

    DMA实验程序 1 2 参数配置
  • 【移动端表格组件】uniapp简单实现H5,小程序,APP多端兼容表格功能,复制即用,简单易懂【详细注释版本】

    前言 由于最近需要做移动端的项目 有个pc端的后台系统里面需要移一部分页面过来 而里面就有很多的表格 我就开始惯例网上先找前人栽的树 我好乘凉 然后找了一圈发现 不管是主流的移动端ui库或者网上自己写的帖子 或者uniapp的插件网站 都没
  • 微信小程序新版canvas2d海报绘制(教你轻松搞定)

    效果 说明 canvas官方很早已经发声不再维护了 所以很多方法都已经不再适用 目前官方推荐适用canvas2d来绘制生成海报 canvas2d来绘制海报 canvas2d的优点 例如 不需要先预下载网络图片再绘制 前端只需要调用网络图片即
  • 物理层&数据链路层

    根据TCP IP体系 计算机网络分成4层体系结构 学习时作5层 物理层 比特流 数据链路层 帧 网络层 IP数据报 分组 运输层 报文 应用层 PDU 其中关系 对等层 gt 协议 上下层 gt 服务 物理层 物理层的数据传输单元为位 比特
  • 【mcuclub】继电器

    1 实物图 型号 SRD 05VDC SL C 2 原理图 3 内部构造 铁芯 线圈 衔铁 触点 弹簧 4 工作原理 只要在线圈两端加上一定的电压 线圈中就会流过一定的电流 从而产生电磁效应 衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸
  • 基于Spring事务的可靠异步调用实践

    SpringTxAsync组件是仓储平台组 WMS6 自主研发的一个专门用于解决可靠异步调用问题的组件 通过使用SpringTxAsync组件 我们成功地解决了在仓储平台 WMS6 中的异步调用需求 经过近二年多的实践并经历了两次618活动
  • caffe源码阅读《二》layer

    首先layer这个类是一个基类 所以他是没有cpp实现的 可以看一下它的cpp代码 include caffe layer hpp namespace caffe INSTANTIATE CLASS Layer namespace caff
  • Vulnhub靶机实战-Me-and-My-Girlfriend

    声明 好好学习 天天向上 搭建 使用virtualbox打开 网络和我的PRESIDENTIAL一样 是要vmware和virtualbox互连 渗透 存活扫描 发现目标 arp scan l 端口扫描 nmap T4 A 192 168
  • 类模板的偏特化

    Class templates 可以被偏特化 partial specialized 或称部份特化 局部特化 这使你得以在特定情形下使用特殊实作码 但仍然留给你 使用者 选择 template parameters 的能力 例如对于下面的