`
nuaa_liu
  • 浏览: 26290 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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
	
}
 
分享到:
评论

相关推荐

    Loki源码

    8. **类型信息**: Loki提供了`TypeTraits`和`TypeList`等工具,允许在编译时获取类型信息并处理类型列表,这是模板元编程的重要组成部分。 9. **异常安全编程**: Loki库中的一些组件,如`ScopeGuard`,可以帮助编写...

    loki库模板元编程的经典库

    - `Typelist`:模板类表示类型列表,允许在编译时进行类型操作,如连接、拆分、查找等。 5. **Type Information**: - `TypeTraits`:提供了一些工具来获取关于类型的信息,如是否可复制、是否是浮点类型等。 6....

    Loki库源码(泛型模式C++库)

     The library makes extensive use of C++ template metaprogramming and implements several commonly used tools: typelist, functor, singleton, smart pointer, object factory, visitor and multimethods. ...

    loki 库 源码 策略设计模式

    5. **Typelist.h**:类型列表是模板元编程中的重要概念,洛基库的Typelist支持类型操作,如类型插入、删除、查询等,是实现多态算法的基础。 6. **MultiMethods.h**:多方法是面向接口编程的一种形式,洛基库提供了...

    loki 程序库源代码

    6. **Typelist**:类型列表模块,这是一个元编程工具,可以用来在编译时处理类型列表,进行类型检查和类型操作,常用于模板元编程。 7. **Intrusive**:侵入式容器模块,这类容器不需要额外的存储来保存对象的引用...

    c++模板元编程

    再如,Loki的TypeList类模板可以表示类型序列,这是元编程中常见的数据结构。通过操作TypeList,可以实现类型级别的算法,如查找、排序、映射等。这样的功能对于实现类型安全的容器和算法非常有用。 模板元编程虽然...

    [原创]自己工作中常用的模板库,简化你的工作

    It can traverse one TypeList or enum value , then call user's template function by suitable type/enum value. This feature converts runtime data into compile data to meet metaprogramming requirement ...

    Windows下线程池的实现(C++)

    1. Task对于参数的变化参考了loki的typelist的做法,可支持0 - 9个参数的函数对象。 2. task.h使用脚本自动生成(taskGen.py) 3. scheduler.h用于解耦thread_pool和task_thread两个模块。 main.cpp演示了tp_lib的...

Global site tag (gtag.js) - Google Analytics