读书人

loki:typelist

发布时间: 2012-12-20 09:53:21 作者: rapoo

loki::typelist

loki的typelist用来形成class的list

依赖于递归行为 只不过在编译期执行

?

namespace loki{class NullType;struct EmptyType {};template<class T, class u>struct TypeList{typedef T Head;typedef U Tail;};typedef TypeList<char, TypeList<signed char, TypeList<unsigned char,NullType> > > CharList;#define TYPELIST_1(T1) TypeList<T1,NullType>#define TYPELIST_2(T1,T2) TypeList<T1, TYPELIST_1(T2)>#define TYPELIST_3(T1,T2,T3) TypeList<T1,TYPELIST_2<T2,T3>>//计算typelist的长度template <class TList> struct Length;template <>Length<NullType>{enum {value = 0};};template<class T,class U>struct Length<TypeList<T,U> >{enum { value = 1 + Length<U>::value};};//在typelist中查找某一typetemplate<class Tlist,class T> struct Indexof;template<class T>struct Indexof<NullType,T>{enum { value = -1};};template <class Tail, class T>struct Indexof<TypeList<T,Tail>, T>{enum {value = 0};};template <class Head,class Tail,class T>struct Indexof<TypeList<Head,Tail>,T>{private:enum {temp = Indexof<Tail,T>::value};public:enum {value = temp==-1?-1:1+temp};};//list其他一些行为        //append//erase//replace}
?

读书人网 >编程

热点推荐