模版问题
问题1 编译器可以直接通过,,但这些写法是否都是合法的??
显示实例化
template void Swap(double &,double &)
template void Swap <double> (double &,double &)
显示具体化
template <> void Swap(double &,double &)
template <> void Swap <double> (double &,double &)
问题2:
template <typename T> //T :常规变量,指针变量,引用,类
class sample
{
public:
sample(){cout < < "常规模版 ";}
};
template <typename T> class sample <T*> //这么写合法吗?
{
public:
sample(){cout < < "指针模板 ";}
};
template <typename T> class sample <T&> //这么写合法吗?
{
public:
sample(){cout < < "引用模板 ";}
};
template <typename T> class sample <T*>
template <typename T> class sample <T&> 的写法书上并没有写出来 ,我自己乱试出来的 汗~~~~~~~
因为c++很多不规范也不会出现编译错误 所以想问下这样写符合规则吗?
[解决办法]
這些寫法都是合法的,問題一裏面的double和方括號都可以省略,模板參數可以自動推演出來。
問題二裏面的兩种寫法是偏特化。