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中查找某一type
	template<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
	
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值