使用模板可以完成很多看起来很不可思议的事情,比如下面这个,可以在编译时实现静态类型判断
#include
#include
template
class TypeChecker;
template<> class TypeChecker
{
public:
static const int TYPE = 1;
};
template<> class TypeChecker
{
public:
static const int TYPE = 2;
};
template<> class TypeChecker
{
public:
static const int TYPE = 3;
};
int main()
{
std::string dummy = "";
if(TypeChecker::TYPE == 1)
{
std::cout << "std::string" << std::endl;
}
char* data = "";
if(!TypeChecker::TYPE == 2)
{
std::cout << "const char*" << std::endl;
}
}
从这里可以看到,模板基本上就是将你所需要的所有情况都定义一次,然后让编译器来选择哪个适用。
摘自 无心云