type traits
在經過一年之後!?!? 今日再翻 "STL源碼剖析" (應該七八次了),終於對type traits有所感覺,於是寫了測試碼如下。
簡而言之,type traits 就是一種type 截取機XD,一個type 可能經過class template的層層包裝,導致我們原本所想要處理的type得知變成隱性,這時候就需要type traits來追蹤出原本的type,相當有趣,當然,在STL中,並不是所有的iterator都是class type,而原生指標(ex: int*) ,可以用template partial specialization 來解決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;
};
(ref: STL源碼剖析 chapter 3.4 p.85~p.92)
---
一年前覺得不怎麼有趣XD
沒有留言:
張貼留言