星期五, 11月 30, 2007

type traits

在經過一年之後!?!? 今日再翻 "STL源碼剖析" (應該七八次了),終於對type traits有所感覺,於是寫了測試碼如下。

template<class T> class Node;
template<class T> class LinkList;
template<class T> class iterator_traits;

template<class T>
class Node{
friend class LinkList<T>;
typedef T value_type;
};

template<class T>
class LinkList{
typedef typename Node<T>::value_type value_type;
};

template<class I>
class iterator_traits{
typedef typename I::value_type value_type;
};
簡而言之,type traits 就是一種type 截取機XD,一個type 可能經過class template的層層包裝,導致我們原本所想要處理的type得知變成隱性,這時候就需要type traits來追蹤出原本的type,相當有趣,當然,在STL中,並不是所有的iterator都是class type,而原生指標(ex: int*) ,可以用template partial specialization 來解決

(ref: STL源碼剖析 chapter 3.4 p.85~p.92)

---
一年前覺得不怎麼有趣XD

沒有留言: