stl源码剖析一书上的 traits的特化版本的疑问
问题:照着书上写了一个简单的traits, 发现作者提供的特化版本理解不了。
template <class T>struct MyIter { typedef T value_type; T* ptr; MyIter(T* p = 0) : ptr(p) {} T const & operator*() const { return *ptr; }};template <class T>struct MyTraits { //page 87 页的版本 typedef typename T::value_type value_type;};template<class T> //这个是我自己写的struct MyTraits<T*> //解决原生指针{ typedef typename T::value_type value_type;};/*page 88页 提供 MyTraits<T*>的 特化版本如下:template<class T>struct MyTraits<T*> { typedef typename T value_type;};另外还有这么一段文字:于是,原生指针int* 虽然不是一种class type, 亦可透过traits取其value type.........问题在于: 我提供的traits的特化版本和作者的不一样, 为什么作者会这样写? 当使用一个MyTraits的使用,类型肯定是迭代器MyIter进行匹配,,另外MyIter中定义了类型,那么 我的应该没有错啊。*///多一层次的traitstemplate<class T>typename MyTraits<T>::value_type TestFunc( T iter){ return *iter;}