/*
* special_2.cpp
*
* Created on: 2013年8月4日
* Author: Administrator
*/
#include <iostream>
#include <typeinfo>
#include <string>
using namespace std;
template <typename T>
class Type{
public:
static string name(){
return typeid(T).name();
}
};
//特化
template <>
class Type<bool>{
public:
static string name(){
return "bool !!!";
}
};
template <>
class Type<int>{
public:
static string name(){
return "int ~~~~";
}
};
template <>
class Type<double>{
public:
static string name(){
return "double ...";
}
};
template <>
class Type<char>{
public:
static string name(){
return "char ";
}
};
//偏特化
template <typename T>
class Type<T*>{
public:
static string name(){
return Type<int>::name() + " pointer";
}
};
int main(){
cout<<Type<double>::name()<<endl;
cout<<Type<int>::name()<<endl;
cout<<Type<char>::name()<<endl;
cout<<Type<int*>::name()<<endl;
cout<<Type<bool>::name()<<endl;
}
模板的特化与偏特化
最新推荐文章于 2019-06-21 13:38:16 发布