/********************************************************************
file name : CLK.h
author : Clark/陈泽丹
created : 2011-11-10
purpose : 用低成本的对象来传类型
模板函数是没有偏特化的, 但可以用函数重载来实现相同效果。但用函数重载
会导致为了传入类型,需传入该类型的对象。这导致了成本。 使用Type2Type可以使
为传类型而传入的对象的成本降到最低。
*********************************************************************/
#include <iostream>
using namespace std;
template<class T>
class Type2Type
{
typedef T OriginalType;
};
class Test
{
public:
template<class T>
void DoSomething(T)
{
cout<<"Dosomething T"<<endl;
}
void DoSomething(Type2Type<double>)
{
cout<<"Dosomething double"<<endl;
}
};
void main()
{
Test show;
//Type2Type<char>() 低成本对象
show.DoSomething(Type2Type<char>());
//Type2Type<double>() 低成本对象
show.DoSomething(Type2Type<double>());
system("pause");
}