类模板的偏特化

原创 2017年01月03日 16:49:23

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*> { 
... 
}; 
版权声明:本文为博主原创文章,未经博主允许不得转载。

【C++泛型编程】模板偏特化、局部类和型别映射(Int2Type,Type2Type)以及型别选择

1.模板偏特化          模板偏特化是让你在template的所有可能实体中特化出一组子集。 下面是一个模板全特化的例子,假设有一个类模板,名为Widget: template class W...

在VC6里把偏特化后的模板类(或者整个模板类族)声明为另一个类的友元的方法

/******************************************************************** file name : CLK.h author ...

c++类模板与函数模板的偏特化

(1) 类模板的偏特化 例如c++标准库中的类vector的定义 template class vector { // … // }; template class vector { /...

《C++ Primer第五版》学习笔记-插播-模板偏特化、编译期Assertions与Type2Type

几个template的magic用法.

关于C++的模板偏特化和萃取编程技法

最近在读《STL源码剖析》。读这本书的时候发现自己的C++的知识其实是非常匮乏的。 从大学的C++教材上学到一些C++基本的语法、内存管理、继承、多态等方面的基础知识。这些只是是一棵大树的根。而读ST...

STL(5)之Partial Specialization(模板的偏特化)

1.为什么要出现? 按照

篮子、水果和鸡蛋——关于C++的模板偏特化和萃取编程技法

最近在读《STL源码剖析》。读这本书的时候发现自己的C++的知识其实是非常匮乏的。 从大学的C++教材上学到一些C++基本的语法、内存管理、继承、多态等方面的基础知识。这些只是是一棵大树的根。而读ST...

Traits 编程技法+模板偏特化+template参数推导+内嵌型别编程技巧

STL中,traits编程技法得到了很大的应用,了解这个,才能一窥STL奥妙所在。 先将自己所理解的记录如下: Traits技术可以用来获得一个 类型 的相关信息的。 首先假如有以下一个泛型的迭代器类...

模板的偏特化

总结: 模板特化/全特化是指给每一个模板参数一个具体的类型,以具体实现这个模板,而且template后面的尖括号中不带任何内容; 模板偏特化是指只给部分模板参数一个具体的类型,来实现这个模板;...
  • gxut555
  • gxut555
  • 2012年04月06日 17:55
  • 819

C++ 模板偏特化

From: http://blog.sina.com.cn/s/blog_65d069c601010fb2.html c++模板特化 一、模板特化, specialization oftemp...
  • fyfcauc
  • fyfcauc
  • 2014年08月01日 14:59
  • 276
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:类模板的偏特化
举报原因:
原因补充:

(最多只允许输入30个字)