c++ 偏特化 求解释为什么编译不了?

 #include <iostream>
#include <cstdio>
#include <string>
using namespace std;
#if 0
template< class T>
struct iterator_traits
{
    typedef typename T::iterator_category   iterator_category;
    typedef typename T::value_type      value_type;
    typedef typename T::difference_type difference_type;//表示两迭代器之间的距离
    typedef typename T::pointer     pointer;
    typedef typename T::reference       reference;
};
#endif
template<class T>
class iterator<const T*>
{
    puclic:
    iterator(){cout<<"ok?"<<endl;}
};
int main(void)
{   
     iterator< const int*> ok;
}

http://www.jb51.net/article/42099.htm

模板类的使用。。。

我就是看的那个偏特化才这么写的 感觉和他没差别啊

#include<iostream>
using namespace std;
template<class T>   //声明一个类模板,虚拟类型名为T
class Compare
{
 public:
  Compare(T a,T b)
  {
   x=a;
   y=b;
  }
  T max()
  {
   return(x>y)?x:y;
  }
  T min()
  {
   return(x<y)?x:y;
  }
 private:
  T x,y;
}; 
int main()
{
 Compare <int> cmp1(3,7);  //定义对象cmp1,用于两个整数的比较
 cout<<"Max : "<<cmp1.max()<<endl;
 cout<<"Min : "<<cmp1.min()<<endl<<endl;
  Compare <float> cmp2(45.89,88.76);//定义对象cmp2,用于两个浮点数的比较
 cout<<"Max : "<<cmp2.max()<<endl;
 cout<<"Min : "<<cmp2.min()<<endl;
 Compare <char> cmp3('a','A'); //定义对象cmp3,用于两个字符的比较
 cout<<"Max : "<<cmp3.max()<<endl;
 cout<<"Min : "<<cmp3.min()<<endl;
 return 0; 
}