之前遇到了一些关于模板特例化的问题,自己总结一下。 模板的特例化是C++新标准的一个特点,可以自定义某些模板的实现,比如在比较函数compare可以使用less标准库模板比较string、int、char、指针等类型,但如果有const char*类型且比较字符串的字典大小时,就与之前的比较方式不同了: 代码语言:javascript复制#ifndef A_H
#define A_H
#include
#include
using std::less;
template
int compare(const T v1,const T v2)
{
if (less()(v1,v2))
{
return -1;
}
else if (less()(v2,v1))
{
return 1;
}
else
{
return 0;
}
}
template
inline int compare(const char *const a,const char *const b)
{
return strcmp(a,b);
}
#endif
#include "a.h"
using std::cout;
using std::endl;
int main()
{
cout |