【C++模板】特化与偏特化 template [partial] specialization
1 template specialization 模板特化
一般情况下类模板定义如下:
template<class Window, class Controller> class Widget {... 泛化实现代码 ... };
特化是指把类模板中指定的class T变成具体的类型:
class Widget<ModalDialog, MyController> {... 特化实现代码 ... };
其中ModalDialog和MyController是你自己另外定义的类.
有了这个Widget的特化定义之后,如果你以后定义了Widget<ModalDialog, MyController>对象时,编译器就会使用上述的特化定义.
如果定义了其它泛型对象,那么编译器就是用原本的泛化定义.
这就是模板的特化.
2 template partial specialization 模板偏特化
模板特化是通过"给模板中的所有模板参数一个具体的类"的方式来实现的.而模板偏特化则是通过"给模板中的部分模板参数以具体的类,而留下剩余的模板参数仍然使用原来的泛化定义"的方式来实现的.
template<class Window> //仍然使用原来的泛化定义; class Widget<Window, MyController> //MyController是具体的类,是特化定义; {... 偏特化实现代码 ... };
模板的偏特化能力很强大.当你实例化一个模板时,编译器会把目前存在的偏特化模板和全特化模板做比较,并找出其中最合适、最匹配的实现.
这样,灵活性就很大.
模板的偏特化机制不能用在函数身上,不论成员函数还是非成员函数.
3 注意
- 虽然你可以全特化类模板中的成员函数,但是你不能偏特化他们;
- 你不能偏特化命名空间级别(namespace-level)的函数(non-member).最接近"命名空间级别模板函数"的偏特化机制就是函数重载,那就意味着你对"函数参数"(而非返回值类型或内部所用类型)有很精致的特化能力;
- 特化或全特化时,template后面的尖括号中不带任何内容;
Author: visaya fan <visayafan[AT]gmail.com or visayafan[AT]163.com>
Date: 2011-10-21 17:30:04
HTML generated by org-mode 6.33x in emacs 23
【C++模板】特化与偏特化 template [partial] specialization相关推荐
- C++——模板特化和偏特化
1.引言 C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现.目前,STL在C++社区中得到了广泛的关注.应用和研究.理 ...
- Th4.6:模板全特化、偏特化(局部特化)详述
本小节回顾的知识点分别是模板全特化.偏特化(局部特化). 今天总结的知识分为以下4个大点: (1)特化与泛化 (2)类模板特化 (2.1)类模板全特化 a)常规全特化 ...
- C++模板的全特化和偏特化
C++模板的全特化与偏特化 全特化 偏特化 例子 总结 全特化 全特化一般用于处理有特殊要求的类或者函数,此时依靠泛型模板无法处理这种情况.,因此全特化可以运用在类模板和函数模板当中.其模板参数列表为 ...
- 模板特化,全特化,偏特化,全部特化,部分特化的含义
模板特化,任何针对模板参数进一步进行条件限制设计的特化版本.<泛型思维> 全特化就是全部特化,即针对所有的模板参数进行特化.<c++ primer> 偏特化就是部分特化,即针对 ...
- C++模板之特化与偏特化详解
2019独角兽企业重金招聘Python工程师标准>>> C++函数模板与类模板实例解析_C 语言_脚本之家 http://www.jb51.net/article/53746.htm ...
- C/Cpp / STL / 模板全特化和偏特化
栗子 #include <iostream>template <typename T1, typename T2> struct Test {void Print() { st ...
- [C++基础]034_C++模板编程里的主版本模板类、全特化、偏特化(C++ Type Traits)
http://www.cnblogs.com/alephsoul-alephsoul/archive/2012/10/18/2728753.html 1. 主版本模板类 首先我们来看一段初学者都能看 ...
- C++ 模板的全特化与偏特化
模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的. 模板分为类模板与函数模板,特化分为全特化与偏特化.全特化就是限定死模板实现的具体类型,偏特化就是如果这 ...
- C++ 模板特化与偏特化
文章目录 1.模板特化 1.1 概述 1.2 函数模板特化 1.3 类模板特化 2.模板偏特化 2.1 概述 2.2 函数模板偏特化 2.3 类模板偏特化 3.模板类调用优先级 参考文献 1.模板特化 ...
最新文章
- 2016年,C语言该怎样写
- lftp linux,linux下使用 lftp
- mysql备份与恢复 cat_MySQL备份和恢复具体实施
- Windows8之hyper-v探索
- BGP——本地优先级选路+BGP路由水平分割机制(讲解+配置命令)
- JS数据结构第六篇 --- 二叉树力扣练习题
- Please select Android SDK的解决
- 百度实习1,2,3面-教育知心搜索前端项目组
- (BISM)FTP搜索引擎BLOG开通了,专门交流搜索引擎技术
- 小卡机器人积木教程_一盒56种玩法!这套智能积木机器人秒杀家中99%的益智玩具!| 新年礼物...
- Python爬虫QQ空间
- WPS宏插件使用教程
- 视频剪辑素材哪里找?这个几个网站就够了。
- PHP项目汇报ppt模板,免费工作汇报模板(课堂PPT)
- 油猴脚本屏蔽CSND个人博客主页烦人广告
- 阿里架构师经验分享!写给即将正在找工作的Java攻城狮,吊打面试官
- MDaemon功能篇之优先级邮件
- 计算机怎样发现路由器上u盘,路由器USB插口的4个功能,你也许一个都不知道!...
- 教你十分钟写一个软件防火墙
- 操作系统原理分析实验
热门文章
- 242. 有效的字母异位词 golang
- WWW软件全球使用排名
- Xshell链接不上云服务器的解决方案
- BFPTR算法详解+实现+复杂度证明
- C++ 写时拷贝 2
- Linux select 实现并发服务器和客户端
- 701. 二叉搜索树中的插入操作
- 看完99%的人都学会了!9次Android面试经验总结,我先收藏为敬
- [TimLinux] Python 迭代器(iterator)和生成器(generator)
- 最感叹的莫过于一见如故,最悲伤的莫过于再见陌路。最深的孤独,是你明知道自己的渴望,却得对它装聋作哑。最美的你不是生如夏花,而是在时间的长河里,波澜不惊。...