类型萃取---模板类的特化的应用

一、函数模板的特化:

1、需要先有一个模板函数

template
T Max(T left, T right)
{
	return left > right ? left : right;
}//这种方式不能传字符串,需要进行特化
//特化:char*
template<>
//Max这个整体是函数的名字
char* Max(char* left, char* right)
{
	if (strcmp(left, right) >= 0)
		return left;
	return right;
}

二、模板类里面的特化:

1、全特化:把模板参数列表里面的多个模板类型都进行具体化

特化自己封装的Vector

# include
template
class Vector
	//把Vector的模板类特化为处理整型的
{
public:
	//构造函数
	Vector()
		:_start(NULL)
		, _finish(NULL)
		, _endOfStorage(NULL)
	{}
private:
	int* _start;
	int* _finish;
	int* _endOfStorage;
};
int main()
{
	Vector v1;//此时不能实例化为
	Vector v2;
	return 0;
}

2、偏特化(局部特化):对模板的部分参数进行特化

(1)对一部分参数进行特化

(2)

 

你可能感兴趣的:(类型萃取---模板类的特化的应用)