首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

loki:typelist

2012-12-20 
loki::typelistloki的typelist用来形成class的list依赖于递归行为 只不过在编译期执行?namespace loki{cla

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}
?

热点排行