c++模板的重载与特例化
//重载与模板 //函数模板可以被另一个或普通非模版函数重载,名字相同的函数必须具有不同数量或类型的参数 template < typename T > string debug_rep( const T &) { /**/ } template < typename T > string debug_rep( T * p ) { /**/ } string debug_rep( const string &) { /**/ } //编译器会先选择非模板函数版本。 debug_rep< string >( const string &) //使用模板函数 debug_rep( const string &) //使用非模板函数 //模板特例化 //一个特例化版本就是模板的一个独立的定义,在其中一个或多个模版参数被指定为特定的类型 //函数模板特例化 //当我们特例化一个函数模板时,必须为原模板中的每个模板参数都提供实参 //定义一个特例化版本时,函数参数类型必须与一个先前声明的模板中对应的类型匹配。 //使用关键字template后跟一个空尖括号,空尖括号指出我们将为原模板的所有模板参数提供实参 template < typename T > int compare( const T &, const T &); template <> int compare( const